QT 结构体转换为JSON

时间:2025-03-08 08:23:05
void Client::StructToJSon(const std::vector<sDefectItem>& vecDefect, QByteArray &jsonArray)
{
    for(int i = 0; i < (); i++)
    {
        QJsonObject rootObj, objStation[5];
        QJsonArray rootErrorList[5], dataList[5];

        ("imei", (i).imei);
        ("model", QString::fromStdString((i).strModel));
        ("product", QString::fromStdString((i).strProduct));
        ("starttime", QString::fromStdString((i).strStartTime));
        ("endtime", QString::fromStdString((i).strEndTime));
        ("path", QString::fromStdString((i).strImagePath));


        ///
        for(int j = 0; j < 5; j++)
        {
            int num = static_cast<int>((i).vecStation[j].size()) > 0 ? static_cast<int>((i).vecStation[j].size()): 0;
            objStation[j].insert("count", num);
            for(int k = 0; k < (i).vecStation[j].size(); k++)
            {
                QJsonObject objErrorItem;

                ("level", QString::fromStdString((i).vecStation[j].at(k).strErrorLevel));
                ("type", QString::fromStdString((i).vecStation[j].at(k).strType));
                ("length", (i).vecStation[j].at(k).dLength);
                ("width", (i).vecStation[j].at(k).dWidth);
                ("area", (i).vecStation[j].at(k).dArea_mm);
                ("ltx", (i).vecStation[j].at(k).ParARect.ap_LTPoint.nX);
                ("lty", (i).vecStation[j].at(k).ParARect.ap_LTPoint.nY);
                ("rtx", (i).vecStation[j].at(k).ParARect.ap_RTPoint.nX);
                ("rty", (i).vecStation[j].at(k).ParARect.ap_RTPoint.nY);
                ("rbx", (i).vecStation[j].at(k).ParARect.ap_RBPoint.nX);
                ("rby", (i).vecStation[j].at(k).ParARect.ap_RBPoint.nY);
                ("lbx", (i).vecStation[j].at(k).ParARect.ap_LBPoint.nX);
                ("lby", (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;
        (rootObj);
        jsonArray = (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
        }
      ]
    }
  ]
}