Qt json 数据处理

时间:2023-03-09 08:44:14
Qt json 数据处理

QT4中使用第三方库QJson解析JSON文件。

QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中。

用到的头文件

#include <QJsonArray>

#include <QJsonDocument>

#include <QJsonObject>

json解析

1.

QByteArray jsonData = "[{\"id\":\"11\", \"name\":\"aaa\"},"
"{\"id\":\"22\", \"name\":\"bbb\"},"
"{\"id\":\"33\", \"name\":\"ccc\"}]"; QJsonParseError jsonError;
QJsonDocument jsonDoucment = QJsonDocument::fromJson(jsonData, &jsonError);
if(jsonError.error == QJsonParseError::NoError){ if(!(jsonDoucment.isNull()||jsonDoucment.isEmpty())){ QVariantList dataList=jsonDoucment.toVariant().toList();
foreach (QVariant data, dataList) {
QVariantMap dataMap=data.toMap();
qDebug()<<"id:"<<dataMap["id"].toString()<<"name:"<<dataMap["name"].toString();
}
} }else{ //检查错误类型
qDebug()<<"jsonError:"<<jsonError.errorString();
}

2.生成json

QJsonArray jsonArray;
QJsonObject jsonObj1;
jsonObj1.insert ("task_name","task1");
jsonObj1.insert ("task_status:","ok");
jsonObj1.insert ("task_time:","2019_3_26"); QJsonObject jsonObj2;
jsonObj2.insert ("task_name","task2");
jsonObj2.insert ("task_status:","error");
jsonObj2.insert ("task_time:","2019_3_27"); jsonArray.append (jsonObj1);
jsonArray.append (jsonObj2); qDebug()<<jsonArray;

QJsonArray([{"task_name":"task1","task_status:":"ok","task_time:":"2019_3_26"},{"task_name":"task2","task_status:":"error","task_time:":"2019_3_27"}])