C ++ RapidJson帮助反序列化数组对象

时间:2019-07-19 09:43:44

标签: c++ arrays deserialization rapidjson

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

开头

我不想编写代码来“循环”解析数据,它应该非常简单,例如ToObjectList()或ToList()等。在C#中使用NewtonSoft似乎很容易,但是在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”);

1 个答案:

答案 0 :(得分:0)

我会尝试这样的事情:

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