Получите вложенный член JSON без непосредственного получения каждого промежуточного объекта - PullRequest
0 голосов
/ 08 апреля 2019

Я обрабатываю 2-мегабайтную строку JSON в C ++, используя RapidJSON. Я знаю, что вы можете попробовать получить объект с текущего уровня, выполнив:

rapidjson::Value& json = document["object1"];

Но есть ли способ получить что-то, что на несколько уровней глубже за один раз, без необходимости продвигать каждый (и, возможно, не имеющий отношения к моей конечной цели) промежуточный объект? Нечто подобное концептуальным линиям:

rapidjson::Value& member = document["object1.object2.object3.member"];

Я искал это и ничего не придумал, поэтому мне поверили, что ответ отрицательный, но я хотел быть уверен.

1 Ответ

1 голос
/ 09 апреля 2019

Использовать RapidJSON API-указатель JSON :

#include "rapidjson/pointer.h"

Document document;
if (Value* member = GetValueByPointer(document, "/object1/object2/object3/member")) {
    // the pointer was sucessfully resolved in the document
    // do something with member
}
...