QT使用 QJsonDocument 处理 JSON

#include "mainwindow.h"
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonValue>
#include <QDebug>
#include <QFile>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
/*
{
    "encoding": "UTF-8",
    "indent": {
        "length": 3,
        "use_space": true
    },
    "plug-ins": [
        "python",
        "C++",
        "Java"
    ]
}

*/
    //生成JSON
    //打开文件
    QFile fileWrite("jsonTest.json");
    if(!fileWrite.open(QFile::WriteOnly)){
        qDebug() << "fileWrite open failed!";
    }

    QJsonObject rootObj;
    rootObj["encoding"] = "UTF-8";

    QJsonArray  plugArr;
    plugArr << "python" << "C++" << "Java";
    rootObj["plug-ins"] = plugArr;

    QJsonObject indentObj;
    indentObj.insert("length",3);
    indentObj.insert("use_space",true);

    rootObj["indent"] = indentObj;

    QJsonDocument josnDocument;
    QByteArray jsonArray;
    josnDocument.setObject(rootObj);
    if(!josnDocument.isNull()){
        jsonArray =  josnDocument.toJson();
        fileWrite.write(jsonArray);
        qDebug() << jsonArray; //Indented:表示自动添加/n回车符
    }
    fileWrite.close();


    //解析JSON
    //打开文件
    QFile fileRead("jsonTest.json");
    if(!fileRead.open(QFile::ReadOnly)){
        qDebug() << "fileRead open failed!";
    }
    QJsonParseError jsonError;
    QJsonDocument jsonDocument = QJsonDocument::fromJson(fileRead.readAll(),&jsonError);
    if(QJsonParseError::NoError == jsonError.error){
        if(!(jsonDocument.isNull() || jsonDocument.isEmpty()))
        {
            if(jsonDocument.isObject()){
                QVariantMap result = jsonDocument.toVariant().toMap();
                qDebug() << "encoding:" << result["encoding"].toString();
                qDebug() << "plug-ins:" ;
                foreach (QVariant plugin, result["plug-ins"].toList()) {
                    qDebug() << "\t-" << plugin.toString();
                }

                QVariantMap nestedMap = result["indent"].toMap();
                qDebug() << "length"     << nestedMap["length"].toInt();
                qDebug() << "use_space:" << nestedMap["use_space"].toBool();
            }
        }
    }else {
        qFatal(jsonError.errorString().toUtf8().constData());
        exit(1);
    }
    fileRead.close();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值