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

C++ RapidJson Help deserialize array object

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

开头

我不想编写必须 "loop" 才能解析数据的代码,它应该是一些非常简单的东西,例如 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");

我会尝试这样的事情:

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()
}

请你也去看看这个相关的答案: