如何使用QT创建JSON数组

7
我希望将我的数据存储在 JSON 文件中,格式如下:
{
    "plottingData": [
        {
            "min": 17,
            "max": 35,
            "mean": 20

        },
        {
            "min": 7,
            "max": 35,
            "mean": 17
        },
        {
            "min": 8,
            "max": 50,
            "mean": 29
        }

    ]
}

如何创建这个结构体? 我曾经使用QJsonObject,但是我无法像这样添加QJsonArray。

2个回答

8

来自Qt文档:

QJsonArray plot_array;

// use initializer list to construct QJsonObject
auto data1 = QJsonObject(
{
qMakePair(QString("min"), QJsonValue(17)),
qMakePair(QString("max"), QJsonValue(35)),
qMakePair(QString("mean"), QJsonValue(20))
});

plot_array.push_back(QJsonValue(data1));

// Or use insert method to create your QJsonObject
QString min_str("min");
QString max_str("max");
QString mean_str("mean");
for(auto item : your_collection)
{
    QJsonObject item_data;

    item_data.insert(min_str, QJsonValue(item.min));
    item_data.insert(max_str, QJsonValue(item.max));
    item_data.insert(mean_str, QJsonValue(item.mean));

    plot_array.push_back(QJsonValue(item_data));
}

QJsonObject final_object;

final_object.insert(QString("plottingData"), QJsonValue(plot_array));

谢谢您的回复,但我可能有600个数据?是否有任何方法可以像addData(int min,int max,int mean){...}这样处理? - Hafsa Elif Özçiftci
1
@HafsaElifElalmış 请看我的修改。请注意,我没有在编译器中测试它,所以可能会有问题。但基本用法就像这样。此外,您可以阅读QT文档了解有关QJsonObjectQJsonArrayQJsonValue的更多信息和用法。 - MRB

5
 QJsonObject o1
 {
     { "min", 17 },
     { "max", 35 },
     { "mean", 20 },
 };
 QJsonObject o2;
 o2 [ "min" ] = 7;
 o2 [ "max" ] = 35;
 o2 [ "mean"] = 17;

 QJsonArray arr;
 arr.append ( o1 );
 arr.append ( o2 );

 QJsonObject obj;
 obj [ "plottingData" ] = arr;

 //to see the JSON output
 QJsonDocument doc ( obj );
 qDebug() << doc.toJson ( QJsonDocument::Compact );  // or QJsonDocument::Indented
 // output: "{\"plottingData\":[{\"max\":35,\"mean\":20,\"min\":17},{\"max\":35,\"mean\":17,\"min\":7}]}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接