在Qt5中使用多个相同的键构造json

时间:2015-02-22 01:26:35

标签: json qt5

我想生成一个如下所示的json:

{
    "myRepeatedKey": "test_data_1",
    "myRepeatedKey": "test_data_2",
    "myRepeatedKey": "test_data_3",
    "myRepeatedKey": "test_data_4"
}

使用Qt5。我天真的方法看起来像这样:

QVariantMap map;
map_fill["myRepeatedKey"]="test_data_1";
map_fill["myRepeatedKey"]="test_data_2";
map_fill["myRepeatedKey"]="test_data_3";
map_fill["myRepeatedKey"]="test_data_4";
QJsonDocument doc=QJsonDocument::fromVariant(map);
qDebug()<<doc.toJson();

由于这会替换条目的数据,因此输出(不足为奇):

}
    "myRepeatedKey": "test_data_4"
}

那我怎么能在Qt5中做到这一点?

PS:根据RFC4627建议但不要求json数据中名称/值对的名称是唯一的,所以即使我要求的是不推荐练习,我仍然会知道如何这样做。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为添加重复键是一个坏主意。在这种情况下,您应该使用json数组(QJsonArray)。

QJsonArray array;
array.append("test_data_1");
array.append("test_data_2");
array.append("test_data_3");
array.append("test_data_4");

QJsonObject o;
o["myArray"] = array;

QJsonDocument doc(o);
qDebug() << doc.toJson();

输出

{
    "myArray": [
        "test_data_1",
        "test_data_2",
        "test_data_3",
        "test_data_4"
    ]
}