一、创建json对象
类型一:
QJsonObject interestObj;
// 插入元素,对应键值对
interestObj.insert("Length", "797");
interestObj.insert("Width", "797");
interestObj.insert("Height", "797");
interestObj.insert("ExternalVolume", "1898484");
interestObj.insert("IntegralVolume", "5792330");
输出:
{
"ExternalVolume": "1898484",
"Height": "797",
"IntegralVolume": "5792330",
"Length": "797",
"Width": "797"
}
类型二:
QJsonArray plot_array;
QJsonObject result_obj;
// 定义 { } 对象
QJsonObject interestObj;
// 插入元素,对应键值对
interestObj.insert("Length", "797");
interestObj.insert("Width", "797");
interestObj.insert("Height", "797");
interestObj.insert("ExternalVolume", "1898484");
interestObj.insert("IntegralVolume", "5792330");
plot_array.append(interestObj);
result_obj.insert("message", "成功");
result_obj.insert("status", 0);
result_obj.insert("data", plot_array);
输出:
{
"data": [{
"ExternalVolume": "1898484",
"Height": "797",
"IntegralVolume": "5792330",
"Length": "797",
"Width": "797"
}],
"message": "成功",
"status": 0
}
二、QJsonObject转换成QByteArray
QJsonDocument document = QJsonDocument(result_obj);
// 转换成QByteArray
QByteArray array = document.toJson();
三、QByteArray转换成QJsonObject
QJsonObject object;
QJsonDocument doc = QJsonDocument::fromJson(QByteArray_data);
QJsonObject obj = doc.object();
//start_id为key值
QJsonValue start_value = obj.value("start_id");
四、JSON数据读取
JSON数据格式:
{
"type": "create_project",
" ProjectName": "Pro8",
"ProNotes": "north",
"site":
[{
"site_name": "zhandain5",
"silo": [
{
"silo_name": "liaocang1",
"sensor":
[{
"sersor_id": "first"
}]
},
{
"silo_name": "liaocang2",
"sensor":
[{
"sersor_id": "first"
}]
}]
},
{
"site_name": "zhandain6",
"silo": [
{
"silo_name": "liaocang1",
"sensor":
[{
"sersor_id": "first"
}]
},
{
"silo_name": "liaocang2",
"sensor":
[{
"sersor_id": "first"
}]
}]
}
]
}
示例代码:
QJsonValue site_name, data_name;
QJsonObject getJsonMsg;
...
//上述省略将读取的string数据转换为json格式
QJsonArray site_data = getJsonMsg.value("site").toArray();
int site_size = site_data.size();
for (int i = 0; i < site_size; i++)
{
QJsonObject silo = site_data.at(i).toObject();
site_name = silo.value("site_name");
QJsonArray silo_data = silo.value("silo").toArray();
int silo_size = silo_data.size();
for (int j = 0; j < silo_size; j++)
{
QJsonObject sensor = silo_data.at(j).toObject();
data_name = sensor.value("silo_name");
}
}
参考链接 QT中Json对象,字符串 QString,字符数组 QByteArray之间的转换_读不懂的标题的博客-CSDN博客