类 功能
QJsonArray 封装 JSON数组
QJsonDocument 读写 JSON 文档
QJsonObject 封装 JSON 对象
QJsonObject::iterator 用于遍历QJsonObject的 STL 风格的非 const 遍历器
QJsonParseError 报告 JSON 处理过程中出现的错误
QJsonValue 封装 JSON 值
qt字符串转json
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
QJsonDocument qJsonDocumentObj = QJsonDocument::fromJson(baRevDataParam);
QJsonObject qJsonObjs=qJsonDocumentObj.object();
QStringList listKeys =qJsonObjs.keys();
for (QString indexKey:listKeys) {
QJsonValue indexValue = qJsonObjs.value(indexKey);
qDebug() << "" << indexKey << " " << indexValue;
}
json数据的增删改查
取值、 查找、遍历、删除
QJsonObject提供了容器类的基本都有的常规方法,如下:
QJsonObject object({ { "name", "XiaoMing" }, { "age", 15 } });
//是否包含
qDebug() << object.contains("name");
// 取值
qDebug() << object.value("name");
qDebug() << object["name"];
// 查找
qDebug() << object.contains("name");
auto iter = object.find("name");
// 遍历
for (auto iter = object.begin(); iter != object.end(); iter++)
qDebug() << iter.key() << iter.value();
// 删除
object.remove("name");
例子:
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();
}