Это мой JSON:
{
"data": {
"text": "hey stackoverflow",
"array_1": [
["hello", "world", 11, 14]
]
},
}
Мне удалось извлечь атрибут text
следующим образом:
Код:
document.Parse(request_body);
auto& data = document["data"];
std::string text = data["text"].GetString();
printf("text: %s\n", text.c_str());
Вывод:
text: hey stackoverflow
Теперь мне нужно извлечь array_1
как std::vector<std::vector<std::any>>
.
Я предполагаю, что, чтобы иметь такой тип данных, мне придется перебирать data["array_1"]
, используя типы quickjson длязаполнить векторы.
Проблема в том, что даже после попытки воспроизвести то, что я видел в Интернете, я все еще не могу прочитать значения внутри data["array_1"]
.
Код:
auto& array_1 = data["array_1"];
static const char* kTypeNames[] = { "Null", "False", "True", "Object", "Array", "String", "Number" };
for (rapidjson::Value::ConstValueIterator itr = array_1.Begin(); itr != array_1.End(); ++itr){
printf("item\n");
for (rapidjson::Value::ConstValueIterator itr2 = itr->Begin(); itr2 != itr->End(); ++itr2){
printf("Type is %s\n", kTypeNames[itr->GetType()]);
}
}
Вывод:
item
Type is Array
Type is Array
Type is Array
Type is Array
Но мне нужно иметь:
item
Type is String
Type is String
Type is Number
Type is Number
EDIT
Я вызывал GetType
на неправильном итераторе..
Спасибо за помощь