运行效果:
QString转QJsonObject
QString str = "{\"key1\":15}";//QString
QByteArray bytearr = str.toUtf8();//QString转QByteArray
QJsonParseError jsonError;
QJsonDocument doc = QJsonDocument::fromJson(bytearr,&jsonError);//QByteArray转QJsonDocument
if (jsonError.error != QJsonParseError::NoError){
QString errdata = QString(jsonError.errorString().toUtf8().constData());
qDebug() << errdata;
}
QJsonObject obj = doc.object();//QJsonDocument转QJsonObject
qDebug() << obj["key1"].toInt();
QJsonObject转QString
QJsonObject obj;
obj.insert("key1",20);
QJsonDocument jsonDoc(obj);//QJsonObject转QJsonDocument
QString str = QString(jsonDoc.toJson());//QJsonDocument转QString
qDebug() << str;
示例代码:
#include<QVariantMap>
#include<QJsonDocument>
#include<QJsonArray>
#include<QJsonObject>
QVariantMap map;
//插入字符串
map.insert("key1", "hello");
//插入整形
map.insert("key2", 10);
QJsonArray jsonarr;
for(int i=0; i<3; i++){
QJsonObject tempjsonobj;
tempjsonobj["obj1"] = i;
tempjsonobj["obj2"] = i+10;
jsonarr.push_back(tempjsonobj);
}
//插入数组
map.insert("arrkey",jsonarr.toVariantList());
//插入浮点型
map.insert("key3", 10.10);
//转换为QJsonDocument
QJsonDocument doc = QJsonDocument::fromVariant(QVariant(map));
//转换为QString
QString strdoc = doc.toJson(QJsonDocument::Compact);
//转换为QByteArray
QByteArray bytearr = strdoc.toUtf8();
qDebug() << "strdoc:" << strdoc;
qDebug() << "bytearr:" << bytearr;
//QByteArray转QJsonObject
QJsonDocument doc2 = QJsonDocument::fromJson(bytearr);//将QByteArray转为QJsonDocument
QJsonObject jsonobj = doc.object(); //将QJsonDocument转为QJsonObject
//根据key获取value
QJsonArray array = jsonobj["arrkey"].toArray();
for(int i=0; i<array.size(); i++){
QJsonObject tempjsonobj = array.at(i).toObject();
qDebug() << tempjsonobj["obj1"].toInt() << " " << tempjsonobj["obj2"].toInt();
}
QString key1 = jsonobj["key1"].toString();
int key2 = jsonobj["key2"].toInt();
double key3 = jsonobj["key3"].toDouble();
qDebug() << key1 << " " << key2 << " " << key3;