2013-12-10 3 views
5

Пусть Предположим, у меня есть этот JSon файл:JsonCpp - когда есть объект json :: Value, как я могу узнать его ключевое имя?

[ 
    { 
     "id": 0 
    } 
] 

с помощью jsoncpp, я могу иметь Json::Value объект, делая это:

Json::Value node = root[0u]["id"]; 

ОК, где-то в коде, я получаю, что node, и я хочу получить информацию об этом. Я могу получить его значение, например:

int node_value = node.asInt(); 

Но как я могу получить его ИМЯ? (т. е. «id»). Это должно быть примерно так:

string node_name = node.Name(); //or maybe: 
string node_name2 = node.Key(); 

но я не могу найти ничего подобного. Помогите? Как я могу получить имя узла?

ответ

4

Вы можете использовать Json :: Value :: getMemberNames() для перебора имен.

Json::Value value; 
for (auto const& id : value.getMemberNames()) { 
    std::cout << id << std::endl; 
} 
+0

Но это означает, что мне нужно добраться до родителя объекта Value, который у меня есть (что еще один вопрос без ответа). Есть ли способ добраться до родительского объекта Value? – Rong

+0

Невозможно получить родителя значения, насколько я знаю; Зачем тебе это? Каков ваш прецедент? – Brandon

+0

Меня попросили написать обертку в библиотеку jsoncpp, чтобы пройти через дерево json. Я предположил, что jsoncpp уже позаботился об этом, и мне просто нужно выяснить, как это сделать. – Rong

1

Вам нужен указатель наверх? Это неплохая идея, но добавление поля для указателя вверх приведет к нарушению двоичной совместимости (which is very important). Так что да, вам нужно обернуть его.

В настоящее время сущностью является только Value, как и любой другой.

 Смежные вопросы

  • Нет связанных вопросов^_^