Поле tokens
является массивом, а не объектом.Поэтому вам нужно запросить TJSONArray
у GetValue<T>()
вместо TJSONObject
.
Но, что более важно, тип, который вы запрашиваете у GetValue<T>()
, должен быть указателем тип, поскольку вы запрашиваете тип класса JSON, а не встроенный тип, такой как int
или String
.Поскольку вы запрашиваете TJSONObject
вместо TJSONObject*
, именно поэтому вы получаете сообщение об ошибке.
Кроме того, GetValue<T>()
возвращает часть пары value , а неСама пара.Таким образом, вам нужно присвоить возвращенный указатель переменной TJSONArray*
(jpa
вместо TJSONPair*
).
Попробуйте:
TJSONArray *Data = ...;
TJSONObject *obj;
TJSONArray *arr;
for(int i = 0; i < Data->Size(); i++)
{
obj = (TJSONObject*) Data->Get(i);
arr = obj->GetValue<TJSONArray*>("tokens");
}
Или:
TJSONArray *Data = ...;
TJSONArray *arr;
for(int i = 0; i < Data->Size(); i++)
{
arr = Data->GetValue<TJSONArray*>("$["+IntToStr(i)+"].tokens");
}