Qt Json 读写操作示例
Qt Json 读写操作示例
类组成:
类 | 符号 |
---|---|
QJsonArray | 封装JSON数组 |
QJsonDocument | 读取和写入JSON文档的方法 |
QJsonObject | 封装JSON对象 |
QJsonObject::const_iterator | QJsonObject::const_iterator类为QJsonObject提供了一个stl风格的常量迭代器 |
QJsonObject::iterator | QJsonObject::iterator类为QJsonObject提供了一个stl风格的非常量迭代器 |
QJsonParseError | 用于报告JSON解析过程中的错误 |
QJsonValue | 封装JSON值 |
头文件
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QJsonValue>
示例
{
"data": [
{
"square": [
{
"height": 0,
"success": false
},
{
"height": 3.15,
"success": false
},
{
"height": 33,
"success": true
}
],
"color": "Blue"
},
{
"square": [
{
"height": 0,
"success": false
},
{
"height": 5.5,
"success": false
},
{
"height": 55,
"success": true
}
],
"color": "Green"
}
],
"time": "周四 12月 17 11:11:11 2011"
}
写入
QDateTime time = QDateTime::currentDateTime();
QFile file("test.json");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return ;
QJsonArray dataArray;
for (auto iter = data.square.begin(); iter != data.square.end(); ++iter) {
QJsonArray squareArray;
for (auto it = iter.value().begin(); it != iter.value().end(); ++it)
{
QJsonObject object;
object.insert("height", it.value().height);
object.insert("success", it.value().success);
squareArray.append(object);
}
QJsonObject dataObject;
dataObject.insert("color", iter.key());
dataObject.insert("square", squareArray);
dataArray.append(dataObject);
}
QJsonObject jsonObject;
jsonObject.insert("time", time.toString());
jsonObject.insert("data", dataArray);
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
file.write(jsonDoc.toJson());
file.close();
读取解析
QByteArray byte;
QFile file("test.json");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return ;
byte = file.readAll();
QJsonParseError json_error;
QJsonDocument jsonDoc(QJsonDocument::fromJson(byte, &json_error));
if (json_error.error != QJsonParseError::NoError)
{
return;
}
QJsonObject rootobj = jsonDoc.object();
QDateTime = QDateTime::fromString(rootobj["time"].toString(), "yyyyMMddhhmmss");
/* data键解析 */
QJsonValue data_Value = rootobj.value("data");
if (data_Value.isArray())
{
for (int idx = 0; idx <= data_Value.toArray().size(); idx++)
{
QJsonValue data_Obj = data_Value.toArray().at(idx);
QString color = data_Obj["color"].toString();
QJsonValue square_Obj = data_Obj["square"];
if (square_Obj.isArray())
{
for (int idy = 0; idy <= square_Obj.toArray().size(); idy++)
{
int height = square_Obj.toArray().at(idy)["height"].toDouble();
int success = square_Obj.toArray().at(idy)["success"].toInt();
}
}
}
}
转载请注明出处。以上只代表个人观点,引用不当或侵权请联系删除。