qt json格式组装和拆解

头文件

#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>

 

 

qt json格式组装

  

       QJsonObject simp_ayjson;
            simp_ayjson.insert("name", "LLH");
            simp_ayjson.insert("age", 20);
            simp_ayjson.insert("myAccounts", QString::fromLocal8Bit("123你好"));
            QJsonDocument document;
            document.setObject(simp_ayjson);
            QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);
            QString simpjson_str(simpbyte_array);

qt json格式拆分

网上的比较麻烦,但是比较安全
如下
     //简单的QT解析JSON
        QJsonParseError simp_json_error;
        QString name, myAccount;
        int age;
        //QTJSON所有的元素
        QJsonDocument simp_parse_doucment = QJsonDocument::fromJson(msg.toUtf8(), &simp_json_error);
        //检查json是否有错误
        if (simp_json_error.error == QJsonParseError::NoError)
        {
            if (simp_parse_doucment.isObject())
            {
                //开始解析json对象
                QJsonObject obj = simp_parse_doucment.object();
                //如果包含name
                if (obj.contains("name"))
                {
                    //的到name
                    QJsonValue name_value = obj.take("name");
                    if (name_value.isString())
                    {
                        //转换name
                        name = name_value.toVariant().toString();
                    }
                }
                if (obj.contains("myAccounts"))
                {
                    QJsonValue myAccount_value = obj.take("myAccounts");
                    if (myAccount_value.isDouble())
                    {
                            myAccount = myAccount_value.toVariant().toString();
                    }
                }
                if (obj.contains("age"))
                {
                    QJsonValue age_value = obj.take("age");
                    if (age_value.isDouble())
                    {
                        age = age_value.toVariant().toInt();
                    }
                }
            }
        }
        qDebug() << QString::fromLocal8Bit("简单的QT解析出来的数据:") << name << "," << age << "," << myAccount;
我自己简化了一些步骤如下(我这里数据格式众多,不可能一一校验,既然我这里使用这个说明肯定有这些字段,就减少了一些校验)
     //简单的QT解析JSON
        QJsonParseError simp_json_error;
        //QTJSON所有的元素
        QJsonDocument simp_parse_doucment = QJsonDocument::fromJson(msg.toUtf8(), &simp_json_error);
        //检查json是否有错误
        if (simp_json_error.error == QJsonParseError::NoError)
        {
            QJsonObject obj = simp_parse_doucment.object();
            //obj.contains("control")?strcpy(pt.control,obj.take("control").toVariant().toString().toLatin1().data()):"";
            strcpy(pt.ip1,obj.take("ip1").toVariant().toString().toLatin1().data());
            strcpy(pt.ip2,obj.take("ip2").toVariant().toString().toLatin1().data());
            pt.port1 = obj.take("port1").toVariant().toString().toInt();
        }
        do_send(pt,cmdflag);



posted @ 2020-11-12 10:53  小城熊儿  阅读(358)  评论(0编辑  收藏  举报