void Client::StructToJSon(const std::vector<sDefectItem>& vecDefect, QByteArray &jsonArray)
{
for(int i = 0; i < vecDefect.size(); i++)
{
QJsonObject rootObj, objStation[5];
QJsonArray rootErrorList[5], dataList[5];
rootObj.insert("imei", vecDefect.at(i).imei);
rootObj.insert("model", QString::fromStdString(vecDefect.at(i).strModel));
rootObj.insert("product", QString::fromStdString(vecDefect.at(i).strProduct));
rootObj.insert("starttime", QString::fromStdString(vecDefect.at(i).strStartTime));
rootObj.insert("endtime", QString::fromStdString(vecDefect.at(i).strEndTime));
rootObj.insert("path", QString::fromStdString(vecDefect.at(i).strImagePath));
///
for(int j = 0; j < 5; j++)
{
int num = static_cast<int>(vecDefect.at(i).vecStation[j].size()) > 0 ? static_cast<int>(vecDefect.at(i).vecStation[j].size()): 0;
objStation[j].insert("count", num);
for(int k = 0; k < vecDefect.at(i).vecStation[j].size(); k++)
{
QJsonObject objErrorItem;
objErrorItem.insert("level", QString::fromStdString(vecDefect.at(i).vecStation[j].at(k).strErrorLevel));
objErrorItem.insert("type", QString::fromStdString(vecDefect.at(i).vecStation[j].at(k).strType));
objErrorItem.insert("length", vecDefect.at(i).vecStation[j].at(k).dLength);
objErrorItem.insert("width", vecDefect.at(i).vecStation[j].at(k).dWidth);
objErrorItem.insert("area", vecDefect.at(i).vecStation[j].at(k).dArea_mm);
objErrorItem.insert("ltx", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_LTPoint.nX);
objErrorItem.insert("lty", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_LTPoint.nY);
objErrorItem.insert("rtx", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_RTPoint.nX);
objErrorItem.insert("rty", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_RTPoint.nY);
objErrorItem.insert("rbx", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_RBPoint.nX);
objErrorItem.insert("rby", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_RBPoint.nY);
objErrorItem.insert("lbx", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_LBPoint.nX);
objErrorItem.insert("lby", vecDefect.at(i).vecStation[j].at(k).ParARect.ap_LBPoint.nY);
dataList[j].append(objErrorItem);
}
objStation[j]["data"] = dataList[j];
rootErrorList[j].append(objStation[j]);
QString station = "station" + QString::number(j);
rootObj[station] = rootErrorList[j];
}
QJsonDocument document;
document.setObject(rootObj);
jsonArray = document.toJson(QJsonDocument::Compact);
}
}
得到的结果:
{
"endtime": "2020/1/3 12:25:10",
"imei": 99,
"model": "XX-Gray",
"path": "D:/99_99",
"product": "XX-Gray",
"starttime": "2020/1/3 12:24:02",
"station0": [
{
"count": 2,
"data": [
{
"area": 4.927,
"lbx": 2757,
"lby": 3272,
"len": 81.4625,
"level": "A",
"ltx": 5563,
"lty": 2879,
"rbx": 5631,
"rby": 3365,
"rtx": 2825,
"rty": 3758,
"type": "CCC",
"width": 0.05
},
{
"area": 4.927,
"lbx": 1757,
"lby": 2272,
"len": 81.4625,
"level": "DD",
"ltx": 3563,
"lty": 1879,
"rbx": 3631,
"rby": 1365,
"rtx": 825,
"rty": 2758,
"type": "Scartch",
"width": 0.05
}
]
}
],
"station1": [
{
"count": 0,
"data": [
]
}
],
"station2": [
{
"count": 1,
"data": [
{
"area": 4.927,
"lbx": 1,
"lby": 44,
"len": 81.4625,
"level": "AA",
"ltx": 63,
"lty": 879,
"rbx": 1631,
"rby": 565,
"rtx": 125,
"rty": 758,
"type": "Island",
"width": 0.05
}
]
}
]
}