Массив объектов RapidJson

У меня есть файл JSON, который содержит следующую информацию.

Он использует массив объектов. Я хочу получить имя объекта "TetaInfo" и значение объекта "cad".

Как мне это сделать?

{
    "data": "group",
    "name": "root",
    "objects": {
        "BOOT": {
            "data": "group",
            "name": "ProjectData",
            "objects": {
                "ModInfo": {
                    "data": "group",
                    "name": "Modformat",
                    "objects": {
                        "TetaInfo": {
                            "data": "group",
                            "name": "Tetaformat",
                            "objects": {
                                "Cad": {
                                    "data": "text",
                                    "name": "Cadingo",
                                    "value": "CadValue6.0"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

person Saliny    schedule 24.10.2015    source источник


Ответы (2)


Я точно не знаю, что вам нужно. Но вы можете попробовать использовать недавно добавленный API JSON Pointer в RapidJSON, который может упростить код и проверить достоверность пути.

if (Value* v = GetValueByPointer(d, "/objects/BOOT/objects/ModInfo/objects/TetaInfo/objects/Cad"))
{
    std::cout << (*v)["data"].GetString();
    // ...
}
else {
    // Unable to resolve the value of the pointer. Handle error.
}

GetValueByPointer() возвращает null, когда указатель не может быть разрешен в документе.

person Milo Yip    schedule 02.11.2015

d["объекты"]["BOOT"]["объекты"]["ModInfo"]["объекты"]["TetaInfo"]["объекты"]["Cad"] ="

std::string temp2 =d["объекты"]["BOOT"]["объекты"]["ModInfo"]["объекты"]["TetaInfo"]["объекты"]["Cad"].GetString( ); printf("\ntemp2 === %s",temp2.c_str());

person Saliny    schedule 26.10.2015
comment
Это сработает. Но как получить данные, указав имя объекта в качестве входных данных... вместо того, чтобы указывать весь путь значения. (d [objects] [BOOT] [objects] [ModInfo] [objects] [TetaInfo] [objects] [Cad ]) - person Saliny; 26.10.2015