你可以使用Qt提供的Json模块来解析JSON格式的数据。以下是一个简单的示例:
#include <QCoreApplication>
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 原始数据
QString jsonStr = "{\"code\":200,\"message\":\"\",\"data\":[{\"no\":\"001\",\"rtsp\":\"\",\"cameraAngle\":0.0,\"shipAngle\":0.0},{\"no\":\"002\",\"rtsp\":\"\",\"cameraAngle\":0.0,\"shipAngle\":0.0}],\"total\":null,\"msg\":null}";
// 将字符串转换为Json文档对象
QJsonParseError parseError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8(), &parseError);
if (parseError.error != QJsonParseError::NoError) {
qDebug() << "Json parse error:" << parseError.errorString();
return -1;
}
// 获取根对象
QJsonObject jsonObj = jsonDoc.object();
// 获取data字段,它是一个数组
QJsonArray dataArray = jsonObj.value("data").toArray();
// 遍历数组中的元素并获取其属性值
foreach (const QJsonValue & value, dataArray) {
QJsonObject obj = value.toObject();
QString no = obj.value("no").toString();
QString rtsp = obj.value("rtsp").toString();
double cameraAngle = obj.value("cameraAngle").toDouble();
double shipAngle = obj.value("shipAngle").toDouble();
qDebug() << "no:" << no << "rtsp:" << rtsp << "cameraAngle:" << cameraAngle << "shipAngle:" << shipAngle;
}
return a.exec();
}
输出结果:
no: "001" rtsp: "" cameraAngle: 0 shipAngle: 0
no: "002" rtsp: "" cameraAngle: 0 shipAngle: 0