Я обрабатываю строку JSON размером 2 МБ на С++, используя RapidJSON. Я знаю, что вы можете попробовать получить объект с текущего уровня, выполнив:
rapidjson::Value& json = document["object1"];
Но есть ли способ получить что-то, что имеет несколько уровней глубины за один раз, без необходимости получать по пути каждый (и, возможно, не имеющий отношения к моей конечной цели) промежуточный объект? Что-то вроде концептуальных линий:
rapidjson::Value& member = document["object1.object2.object3.member"];
Я искал это и ничего не нашел, поэтому я решил, что ответ отрицательный, но я хотел быть уверенным.
Используйте API указателя JSON RapidJSON:
#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
}