QT 结构体转换为JSON

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
        }
      ]
    }
  ]
}

 

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Qt中,可通过QJsonDocument和QJsonObject来将结构体保存为JSON格式。首先,我们需要将结构体的数据转换为QJsonObject对象,然后再将QJsonObject对象转换为QJsonDocument对象并进行保存。 下面是一个示例代码: ```cpp #include <QCoreApplication> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> // 定义一个结构体 struct Person { QString name; int age; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建一个Person结构体对象 Person person; person.name = "张三"; person.age = 25; // 将结构体数据转换为QJsonObject对象 QJsonObject jsonObj; jsonObj["name"] = person.name; jsonObj["age"] = person.age; // 将QJsonObject对象转换为QJsonDocument对象 QJsonDocument jsonDoc(jsonObj); // 将QJsonDocument对象保存为JSON文件 QFile file("person.json"); if (file.open(QIODevice::WriteOnly)) { file.write(jsonDoc.toJson()); file.close(); qDebug() << "保存成功!"; } else { qDebug() << "保存失败!"; } return a.exec(); } ``` 上述代码中,我们定义了一个Person结构体,其中包含了姓名和年龄两个成员变量。然后,我们将结构体的数据保存到QJsonObject对象中,再将QJsonObject对象转换为QJsonDocument对象。最后,我们将QJsonDocument对象保存为名称为"person.json"的JSON文件中。 运行上述代码后,将在项目文件夹下生成一个名为"person.json"的文件,其内容为: ```json { "name": "张三", "age": 25 } ``` 这样,我们就成功将结构体保存为JSON格式了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值