qt json编码关联数组和对象

时间:2015-01-28 08:01:58

标签: c++ json qt encode

搜索后发现什么都不合适, 我需要在php中将字符串编码为json,如json_encode,但在Qt中。 Qt是否支持json编码?或者我应该使用第三方库? 我需要编码类似的东西:

array(
    'SourceLanguage' => 'autodetect',
    'Source' => array(
                    'Extension' => '.pdf',
                    'Content' => 'somecontent'
                ),
                'ProcessingTimeout' => 1000,
                'UserDomainModelName' => ''
);

PS:JsonObject,JsonArray,JsonValue之类的东西我找到但是他们的文档没有任何例子杀了我,请帮忙

1 个答案:

答案 0 :(得分:0)

  

将字符串编码为json,如php中的json_encode

由于您在示例中提供的数组不是字符串,而是php数据类型,Qt不知道如何编码该字符串表示形式。

如果你想直接对这些数据进行编码,你可以这样做,从构建内部数组开始: -

QJsonObject innerArrayObject;
innerArrayObject["Extension"] = QString(".pdf");
innerArrayObject["Content"] = Qstring("somecontent");

QJsonArray innerArray;
innerArray.append(innerArrayObject);

QJsonObject content;
content["SourceLanguage"] = QString("autodetect");
content["source"] = innerArray;
content["ProcessingTimeout"] = 1000;
content["UserDomainModelName"] = QString("");

QJsonArray outerArray;
outerArray.append(content);

然后,您可以将顶级数组添加到QJsonObject(根对象),将其放在文档中并打印出内容

QJsonObject obj;
obj["root"] = outerArray;

qDebug() << QJsonDocument(obj).toJson(QJsonDocument::Compact);