justbee23 Опубликовано 29 декабря, 2023 Поделиться Опубликовано 29 декабря, 2023 {"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 OnePeople Опубликовано 29 декабря, 2023 Поделиться Опубликовано 29 декабря, 2023 Не работал со стандартным JSON, но может так? TJSONArray* arr2 = arr1<TJSONArray*>(Object->GetValue(_D("arr2"))); Цитата Ссылка на комментарий
0 Tumaso Опубликовано 29 декабря, 2023 Поделиться Опубликовано 29 декабря, 2023 6 часов назад, justbee23 сказал: TJSONArray* arr2 = static_cast<TJSONArray*>(Object->GetValue(_D("arr2"))); //<--not working логично же. Пытаешься получить arr2 из Object, хотя arr2 находится внутри arr1 Цитата Ссылка на комментарий
0 justbee23 Опубликовано 30 декабря, 2023 Автор Поделиться Опубликовано 30 декабря, 2023 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 Martifan Опубликовано 11 января Поделиться Опубликовано 11 января 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 justbee23 Опубликовано 12 января Автор Поделиться Опубликовано 12 января В 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 justbee23 Опубликовано 15 января Автор Поделиться Опубликовано 15 января В 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(); Цитата Ссылка на комментарий
Вопрос
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
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.