2015-04-09 2 views
-1

Я пытаюсь разобрать Json-файл с помощью quickJson (v 0.11), но я не могу сделать это с помощью простого массива. Вот структура моего файла:массивы acces с quickJson (C++)

[{"id": "my_id1","type":"my_type1"}, 
{"id": "my_id2","type":"my_type2"}, 
... 
] 

Кажется, что rapidJson не читает, что тип файла, начиная с массивом .. Есть ли способ справиться с этим?

Вот выдержка из кода, который я пытался использовать:

FILE * pFile = fopen ("my_json.json" , "r"); rapidjson::FileStream is(pFile); rapidjson::Document document; document.ParseStream<0>(is); и я застрял здесь, потому что я должен получить доступ к элементам по этому синтаксису value = document["key"], но у меня нет какого-либо " ключ "на первом уровне ...

+0

прием к StackOverflow, пожалуйста, уменьшить свой код в соответствующей части и разместить его здесь – Zaiborg

+0

Какую версию rapidjson вы используете и как вы пытаетесь разобрать JSON (код)? – ForEveR

+2

Это недопустимо JSON. Удалите запятую после второго двоеточия в каждой строке. – Wintermute

ответ

2

Учитывая, что у вас есть массив на верхнем уровне вашего JSON-файла, вы просто получите доступ к своему документу, указав индекс в этот массив.

Например:

// access first element 
rapidjson::Value & val = document[0]; 
+0

Thx! Это может показаться очевидным, но это не так, когда я искал ... Для тех, кто получает сообщение об ошибке на 'document [0]', вы можете использовать 'document [0u]' для его решения. – Arcyno

+0

В новых версиях в [GitHub] (https://github.com/miloyip/rapidjson) не нужно использовать '0u'. Попробуйте последнюю версию. –