QT解析 JSON 格式的数据_qt json数据解析-CSDN博客
Qt 操作Json格式文件(创建、插入、解析、修改、删除)_qt json数据处理-CSDN博客
一、解析
QFile file(jsonPath);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
qDebug() << "can't open error!";
return;
}
// 读取文件的全部内容
QByteArray jsData = file.readAll();
file.close();
QJsonParseError jsonError;
QJsonDocument JsonDoc = QJsonDocument::fromJson(jsData, &jsonError);
if (jsonError.error != QJsonParseError::NoError && !JsonDoc.isNull()) {
qDebug() << "Json格式错误!" << jsonError.error;
return;
}
二、修改json
1.获取根节点
QJsonObject jsonObject = JsonDoc.object();//{}
2.获取节点修改内容
QJsonArray【】的内容有顺序,按QJsonArray::at(int i).value()找值;
QJsonObject{}没顺序,按键找值QJsonObject ::value("键");
1例子.
{
"basicMsg": {
"次数": "10次",
"城市": "武汉,长沙",
"天气": "晴",
"平均车速": "52 km/h",
}
}
1.代码
//获取basicMsg:{}节点
QJsonObject basicSubObj= jsonObject.value(QStringLiteral("basicMsg")).toObject();
//修改内容
basicSubObj["次数"]="20";//basicSubObj[键]=新值
basicSubObj["城市"]="北京";
basicSubObj["天气"]= "晴";
basicSubObj["平均车速"]="20km/h";
//把修改的内容在根节点更新,否则会无效
jsonObject["basicMsg"]= basicSubObj;//根节点[键]=新值
例子2:修改id为tag1,清空data_rows内容并添加新内容
{
"tables": [
{
"id": "tag",
"titles": [
"名称",
"开始时间",
"结束时间",
"内容"
],
"data_rows": [
[
"标签1",
"08:23:41",
"08:28:19",
"早晨;晴天"
],
[
"标签2",
"08:23:41",
"08:28:19",
"早晨;晴天"
],
]
},
{
"id": "event",
"titles": [
"名称",
"开始时间",
"结束时间",
"内容"
],
"data_rows": [
[
"事件1",
"08:23:41",
"08:28:19",
"早晨;晴天"
],
[
"事件2",
"08:23:41",
"08:28:19",
"早晨;晴天"
],
]
}
}
//获取 "tables": []节点
QJsonArray tables = jsonObject.value(QStringLiteral("tables")).toArray();
for (int i = 0; i < tables.count(); i++) {
QJsonObject tableObj = tables.at(i).toObject();//获取 "tables": [{},{},{}]节点内的第i个{}结点
QJsonArray RowArr = tableObj.value(QStringLiteral("data_rows")).toArray();
while (RowArr.count()) {
RowArr.pop_back(); //清空内容
}
if (tables.at(i).toObject().value(QStringLiteral("id")).toString() == "tag") {
QJsonArray addRow;
addRow.append("标签");
addRow.append(""); //开始时间
addRow.append(""); //结束时间
addRow.append(""); //标签内容
RowArr.append(addRow);
}
tableObj["data_rows"] = RowArr;
tables.replace(i, tableObj);
}
jsonObject["tables"] = tables;