Перейти к содержанию
Fire Monkey от А до Я
  • 0

не могу получить доступ к массиву из файла JSON


justbee23

Вопрос

{"arr1":[{"arr2":[{"ID":"1","value":"2"},{"ID":"2","value":"3"}]," var1":"test1"}]}

Мне нужно получить значение ID2, но я не могу получить значение arr2.

    std::unique_ptr<TStringStream> jsonStream(new TStringStream);
    jsonStream->LoadFromFile("test.json");
    std::unique_ptr<TJSONValue> jstext(TJSONObject::ParseJSONValue(jsonStream->DataString));
    TJSONObject* Object = static_cast<TJSONObject*>(jstext.get());
    TJSONArray* arr1 = static_cast<TJSONArray*>(Object->GetValue(_D("arr1")));
    TJSONArray* arr2 = static_cast<TJSONArray*>(Object->GetValue(_D("arr2"))); //<--not working

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
6 часов назад, justbee23 сказал:

TJSONArray* arr2 = static_cast<TJSONArray*>(Object->GetValue(_D("arr2"))); //<--not working

логично же. Пытаешься получить arr2 из Object, хотя arr2 находится внутри arr1

Ссылка на комментарий
  • 0
14 часов назад, OnePeople сказал:

Не работал со стандартным JSON, но может так?  TJSONArray* arr2 = arr1<TJSONArray*>(Object->GetValue(_D("arr2")));

[bcc32c Error] test22.cpp(596): 'arr1' does not name a template but is followed by template arguments
 test22.cpp(594): non-template declaration found by name lookup

Ссылка на комментарий
  • 0
TJSONObject* arr1Object = static_cast<TJSONObject*>(arr1->Get(0));

TJSONArray* arr2 = static_cast<TJSONArray*>(arr1Object->GetValue(_D("arr2")));

for (int i = 0; i < arr2->Count; i++) {
    TJSONObject* arr2Object = static_cast<TJSONObject*>(arr2->Get(i));

    String id = arr2Object->GetValue(_D("ID"))->Value();
    String value = arr2Object->GetValue(_D("value"))->Value();
}

 

Ссылка на комментарий
  • 0
В 11.01.2024 в 11:18, Martifan сказал:
TJSONObject* arr1Object = static_cast<TJSONObject*>(arr1->Get(0));

TJSONArray* arr2 = static_cast<TJSONArray*>(arr1Object->GetValue(_D("arr2")));

for (int i = 0; i < arr2->Count; i++) {
    TJSONObject* arr2Object = static_cast<TJSONObject*>(arr2->Get(i));

    String id = arr2Object->GetValue(_D("ID"))->Value();
    String value = arr2Object->GetValue(_D("value"))->Value();
}

[bcc32c Error] Test.cpp(705): use of undeclared identifier 'arr1'

TJSONObject* arr1Object = static_cast<TJSONObject*>(arr1->Get(0));

 

Ссылка на комментарий
  • 0
В 12.01.2024 в 13:26, justbee23 сказал:

 

This is working:

std::unique_ptr<TStringStream> jsonStream(new TStringStream);
jsonStream->LoadFromFile("test.json");
std::unique_ptr<TJSONValue> jstext(TJSONObject::ParseJSONValue(jsonStream->DataString));
TJSONObject* Object = static_cast<TJSONObject*>(jstext.get());

String ID2value = Object->FindValue("arr1[0].arr2[1].value")->ToString();

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...