【问题标题】:C++ RapidJson Help deserialize array objectC++ RapidJson 帮助反序列化数组对象
【发布时间】:2019-07-19 09:43:44
【问题描述】:

我有一个简单的 JSON 文档,它以数组开头,我需要将其解析为 C++ 中的对象列表。我四处搜索,其他一切都以 { 开头,但我的 Json 以 [

开头

我不想编写必须“循环”来解析数据的代码,它应该是非常简单的东西,例如 ToObjectList() 或 ToList() 等。在 NewtonSoft 的 C# 中似乎很容易,但在 RapidJson C++ 中,我想不通。

这是我的 JSON 文件....

[{
    "C": 28563.0,
    "CO": 0,
    "H": 28563.0,
    "L": 28545.0,
    "O": 28547.0,
    "T": 1562907600,
    "TO": 41315958,
    "V": 1447
}, {
    "C": 28499.0,
    "CO": 0,
    "H": 28564.0,
    "L": 28494.0,
    "O": 28563.0,
    "T": 1562911200,
    "TO": 371724821,
    "V": 13030
}, {
    "C": 28516.0,
    "CO": 0,
    "H": 28536.0,
    "L": 28481.0,
    "O": 28499.0,
    "T": 1562914800,
    "TO": 301700826,
    "V": 10582
}, {
    "C": 28539.0,
    "CO": 0,
    "H": 28545.0,
    "L": 28500.0,
    "O": 28517.0,
    "T": 1562918400,
    "TO": 150871685,
    "V": 5290
}]

有人可以帮助解析这是 RapidJson C++ 并将其放入对象列表中吗? (最好不必遍历每个元素)

有点像..... ToObjectList("json_str");

【问题讨论】:

    标签: c++ arrays deserialization rapidjson


    【解决方案1】:

    我会尝试这样的:

    Document d;
    d.Parse(yourJsonString);
    

    "d" 保存已解析的 JSON,因此您可以对其进行迭代并将元素附加到您的列表中(它可以是自定义列表,您可以在每次迭代中创建自定义对象):

    for (SizeType i = 0; i < d.Size(); i++) {
        // Here get elements of the array by key, build your custom object 
        // and insert it into a Vector or List
        // Example: d[i]["V"].GetInt()
    }
    

    请也去看看这个相关的答案: How to parse array in root with rapidjason

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多