Механизм чтобы хранить и получать значения различных свойств из одного текста.

Например в электронной таблице чтобы не плодить множество колонок под каждое свойство можно записать все их в ячейку одной колонки.

При этом количество свойст может быть любое.


Обращение для решения вариатора.


int ires = ts_json(int iJSON, "tsvariator", "apply", int what_answere_if_notexist);

Здесь:

ires - результат команды, если 0 - значит без ошибок и значение искомого свойства задано.

В ином случае - либо ошибка, либо искомого свойства нет в тексте.

what_answere_if_notexist - что вернуть при отсутствии запрашиваемого свойства. Если 0 - то вернуть содержимое переменной запроса. Если 1 - то вернуть значение из свойства "По умолчанию".


Пример записи текста в формате TSVariator:


{  "TSVariator":

[

{"Result":"Нет",

 "SourceVarValue" : "По умолчанию",

 "Comment" : "По умолчанию, если нет параметра"

},

{

 "SourceVarValue": "Ширина профиля",

 "Result" : "50",

 "Comment" : ""

},

{

 "SourceVarValue": "Толщина утеплителя",

 "Result" : "50",

 "Comment" : ""

},

{

 "SourceVarValue": "Огнестойкость",

 "Result" : "Нет",

 "Comment" : "для отметки огнестойкости пп у элемента"

},

{

 "SourceVarValue": "Влагостойкость",

 "Result" : "Нет",

 "Comment" : "для отметки влагостойкости пп у элемента"

}],

"SourceVarName":"Свойство"

}


В квадратных скобках заключен массив классов переменных.

Каждая переменная имеет имя ("SourceVarValue"), примечание ("Comment") и значение ("Result").

"SourceVarName" - имя внешней переменной в коде скрипта, которая используется для получения данных.

В примере имя этой переменной - "Свойство";

Весь текст можно поместить в одну ячейку электронной таблицы и получать из нее значения различных свойств по их названиям ("Ширина профиля", "Толщина профиля" и т.д.). Если запрашиваемого свойства в тексте нет, то выдается значение из первой записи (в примере это значение - "Нет").


Пример.

Получить значение свойства "Огнестойкость" из текста в примере выше.


string sexample; // переменная в которой находится текст из примера выше

var_extern_set("Свойство", "Огнестойкость"); // записать во внешнюю переменную с именем "Свойство" имя свойства, которое хотим считать из текста.

int iJSON;

object("create", "ts_json", iJSON); // создадим объект типа ts_gson

string sresult;

ts_json(iJSON, "DecodeFromString", sexample); 

ires = ts_json(iJSON, "tsvariator", "apply", 1); // если не найдена переменная - вернуть значение по умолчанию                                                sresult = ac_getstrvalue();

сout << "Значение огнестойкости = " << sretuls << "\n";

object("delete",iJSON); // удалить объект