【问题标题】:RapidJson Object ArrayRapidJson 对象数组
【发布时间】:2015-10-24 07:14:22
【问题描述】:

我有一个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"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

【问题讨论】:

    标签: rapidjson


    【解决方案1】:

    我不完全了解您的需求。但是你可以尝试使用 RapidJSON 中新添加的JSON Pointer API,它可以简化代码并检查路径的有效性。

    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。

    【讨论】:

      【解决方案2】:

      d["objects"]["BOOT"]["objects"]["ModInfo"]["objects"]["TetaInfo"]["objects"]["Cad"] ="

      std::string temp2 =d["objects"]["BOOT"]["objects"]["ModInfo"]["objects"]["TetaInfo"]["objects"]["Cad"] .GetString(); printf("\ntemp2 === %s",temp2.​​c_str());

      【讨论】:

      • 这行得通。但是如何通过将对象名称作为输入来检索数据.. 而不是给出值的整个路径。(d["objects"]["BOOT"]["objects"]["ModInfo"]["objects "]["TetaInfo"]["objects"]["Cad"])
      猜你喜欢
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多