如何解析Json数组对象?

时间:2018-08-07 13:40:50

标签: json qt c++11 c++14

我试图解析Qt应用程序中的Json文件,但我被卡在了某个地方。 我有一个json文件,其中包含具有属性的数组。现在我有一个Category类,该类具有作为成员变量的项。现在,我想解析属性并创建一个唯一的类别对象,然后在该对象下添加属性。

我已经通过硬编码实现了这一点:

auto vehicle = std::make_unique<Item>("Coordinates");
vehicle->addEntry(std::make_unique<PropertyItem>("TODO", "x", PropertyType::FLOAT, false, *vehicle.get()));
categories.emplace_back(std::move(vehicle));

void Model::loadItemsFromJson() {
    // Vehicle
    QJsonObject obj = loadJsonFile(":/jsonfiles/vehicle.json");
    QJsonArray properties = obj["properties"].toArray();
   /// No idea here how to achive
}

我应该更改Json以获得更好的处理,还是可以轻松实现? 谢谢

--------------------------编辑-------------------- -

Now my json looks like this:
{
    "General": [{
            "Address": "TODO",
            "Readonly": false
        },
    ],
    "Coordinates": [{
            "Address": "TODO",
            "Readonly": false
        }
    ]
    ]
}

和我的实现:

QJsonObject obj = loadJsonFile(":/jsonfiles/vehicle.json");
QVariantMap map = obj.toVariantMap();
for (auto& m : map.keys()) {
// How to create objects??
}

1 个答案:

答案 0 :(得分:0)

如果您像对象一样构造JSON,例如

sub(/VMF=/,"",INFO[8]);

然后,您只需解析每个{ "Categories" : { "General" : [{ "Address" : "TODO", "Name" : "Name", "Type" : "string", "ReadOnly" : "true" }, ...], "World Coordinates" : [...] } CategoryItem

ScenarioPropertyItem