Тема: TJson
Есть вопрос, как обращаться с обектом TJson?
Т.е. если это массив, есть ли аналог .length? И можно ли к элементам массива обращаться через [1], например?
Вы тут как гость.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть вопрос, как обращаться с обектом TJson?
Т.е. если это массив, есть ли аналог .length? И можно ли к элементам массива обращаться через [1], например?
Есть два класса: TJsonObject и TJsonArray. Первый - общий, для работы с JSON как с объектом, второй для работы как с массивом.
У TJsonObject есть свойство Count, которое отвечает за количество свойств в объекте.
У TJsonArray - свойство Length.
У любого класса можно посмотреть в справочнике функций в редакторе все их методы и свойства, которые у них есть.
{
int nCount, nAge; string sData, sName; TJsonObject JSON; TJsonArray JSONARRAY;
sData = '{ "name": "Вася", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
JSON = TJsonObject.Create();
try {
JSON.LoadFromString(sData);
sName = JSON.S["name" ];
nAge = JSON.I["age" ];
JSONARRAY = JSON.A["friends"];
nCount = JSONARRAY.Length;
} finally { JSON.Free(); }
ShowMessage(Format("Имя: %s, Возраст: %d, Количество друзей: %d", [sName, nAge, nCount]));
}
А вообще, я так привык к подсказкам при наборе объектов, где вываливается список доступных свойств или методов у объекта, что теперь и не могу жить без аддона, специально для этого сделанного. Там становится всё ещё проще. После набора точки будет показано окно с доступными функциями и их описанием. Намного подробней, чем во встроенном справочнике.
Методы S, I, B... у этих объектов - это просто вспомогательные функции, которые возвращают значение в нужном типе (конвертация в string, integer, boolean и проч.)
P.S.:
И можно ли к элементам массива обращаться через [1], например?
Да, можно. Начиная с нуля.
Кстати, можно даже обращаться к элементам массива через строку по именам свойств и номеру, разделённых слешем.
Например:
JSON.S["friends\\0"] (двойной слеш, если это C++Script, если PascalScript - одинарный слеш).
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться