json数据的分析
QJsonArray相当于一个json数组,形如这样
[
{
"name":"zhangsan",
"id":"002",
}
{
"name":"lisi",
"id":"001",
}
]
那么如何取出第一个大括号的内容呢?
Qjsonarray jsonarray;
jsonarray[0]即为第一个大括号的内容
返回值为QJsonValue,将value值转化为jsonobject对象,直接调用toobject方法
QJsonObject json= jsonarray[0].toObject()
QJsonDocument也是一个很好用的中间人,下述代码可直接将bytearray转为jsondocument.
QJsonDocument ::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
QjsonDocument jsondoc;
jsondoc[value值]可以直接获取对应键值,可以一直解析到要解析的json对象在转化为json对象,
如jsondoc[value值][value值].toobject
将json数据写入文本文件参考一下代码
QJsonObject alljson;
QJsonDocument doc(alljson);
QByteArray array = doc.toJson();
QFile file(path);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
return false;
}
else {
file.write(array);
file.close();
}
将json数据从文本文件中读出
QByteArray array;
QFile file(path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return false;
}
else {
array=file.readAll();
file.close();
}
QJsonDocument doc = QJsonDocument::fromJson(array);
QJsonObject alljson = doc.object();
QString转QJson
QJsonObject QstringToJson(QString jsonString)
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toLocal8Bit().data());
if(jsonDocument.isNull())
{
qDebug()<< "String NULL"<< jsonString.toLocal8Bit().data();
}
QJsonObject jsonObject = jsonDocument.object();
return jsonObject;
}
QJson转QString。
该转换不会产生换行符。
QString JsonToQstring(QJsonObject jsonObject)
{
QJsonDocument document;
document.setObject(jsonObject);
QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);
QString simpjson_str(simpbyte_array);
return simpjson_str;
}
QString转QJsonArray 。
bool QstringToJsonarray(const QString &content, QJsonArray &jsonarray)
{
QString temp_content = content.trimmed();
QJsonDocument jsonDocument = QJsonDocument::fromJson(temp_content.toLocal8Bit().data());
if(jsonDocument.isNull())
{
qDebug()<< "String NULL"<< temp_content.toLocal8Bit().data();
return false;
}
jsonarray = jsonDocument.array();
}