my-QT专栏

QT json对象解析

2021-09-10  本文已影响0人  c之气三段

json 数据文本:http://edu.jb51.net/json/json-json-arrays.html

    QJsonObject point_body;
    point_body.insert("aaa",11);
    point_body.insert("bbb",true);
    QJsonDocument v_doc = QJsonDocument(point_body);
    qDebug()<< v_doc.toJson();
image.png

获取json数据

    QString jsonstr = QStringLiteral("{\"aaa\" : 11,\"bbb\" : true}");
    QJsonParseError jsonerror;
    QJsonDocument json = QJsonDocument::fromJson(jsonstr.toStdString().c_str(), &jsonerror);
    if (jsonerror.error == QJsonParseError::NoError && json.isObject())
    {
        QJsonObject jsonobj = json.object();
        qDebug()<<jsonobj.keys();
        qDebug()<<jsonobj.value(QStringLiteral("aaa")).toInt();
        qDebug()<<jsonobj.value(QStringLiteral("bbb")).toBool();
    }
image.png

json转qmap

    static QMap<QString,QString> JsonToMapStringString(const QJsonValue &jsonValue)
    {
        QMap<QString,QString> res;
        QJsonObject obj = jsonValue.toObject();
        QStringList keys = obj.keys();
        for(QString key:keys)
        {
            res.insert(key,obj.value(key).toString());
        }
        return res;
    }
JsonToMapStringString(json.object());

json在文件中的格式

{" ":" "}
{" ":{" ":" "}}

qmap转json

    QString json="{";
    for(auto it=m_jsonPara.begin();it!=m_jsonPara.end();it++)
    {
        QString key = it.key();
        QString value = it.value();
        json.append("\""+key+"\":\""+value+"\",");
    }
    json = json.remove(json.length()-1,1);
    json.append("}");

解析分组的json

如{" ":" "," ":{" ":" "}}

    QJsonParseError jsonerror;
    QJsonDocument json = QJsonDocument::fromJson(strJson.toStdString().c_str(), &jsonerror);
    if(jsonerror.error == QJsonParseError::NoError&&json.isObject())
    {
        QJsonObject jsonobj = json.object();
        for (auto iter = jsonobj.begin(); iter != jsonobj.end(); ++iter)
        {
            if(iter.value().isObject())
            {
                QJsonObject childJsonObj = iter.value().toObject();
                for (auto childIter = childJsonObj.begin(); childIter != childJsonObj.end(); ++childIter)
                {
                    JsonGroup jsonGroup;
                    jsonGroup.name = iter.key();
                    jsonGroup.map.insert(childIter.key(),childIter.value().toString());
                    m_jsonPara.append(jsonGroup);
                }   
            }
            else
            {
                JsonGroup jsonGroup;
                jsonGroup.name = iter.key();
                jsonGroup.value = iter.value().toString();
                m_jsonPara.append(jsonGroup);
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读