QT-json文件

QTjson文件的简单使用

一、创建和写入json文件

1、引用的头文件

复制代码
#include <QJsonObject>
#include <QJsonDocument>

2、数据转json代码

复制代码
 //1.创建json对象
    QJsonObject info;

    info.insert("name", "xiaoming");
    info.insert("age", 18);
    info.insert("height", 185);
    info.insert("weight", "75Kg");

    QJsonObject jsoninfo;
    jsoninfo.insert("code", 1);
    jsoninfo.insert("info", "个人信息");
    jsoninfo.insert("data", info);

    //2.创建json文档
    QJsonDocument jsondoc;
    jsondoc.setObject(jsoninfo);

    QFile qfile("./info.json");
    if(qfile.open(QIODevice::WriteOnly)){
        qfile.write(jsondoc.toJson());
        qfile.close();
        qDebug()<<"写入json文件成功";
        QMessageBox::information(this, "json", "信息写入json文件成功");
    }else{
        QMessageBox::warning(this, "写入文件", "文件打开失败");
    }

二、读取json文件

复制代码
QString strjson;
    QFile qfile("./info.json");
    if(qfile.open(QIODevice::ReadOnly)){
        strjson = qfile.readAll();
        qfile.close();

    }else{
        QMessageBox::warning(this, "读取文件", "文件打开失败");
        exit(1);
    }

    QJsonParseError parseerr;   //返回解析错误的报告信息
    QJsonDocument jsoninfo = QJsonDocument::fromJson(strjson.toUtf8(), &parseerr);

    if(!jsoninfo.isEmpty() && (parseerr.error == QJsonParseError::NoError)){
        //返回的json不为空,没有解析错误
        //转为json对象
        QJsonObject json = jsoninfo.object();
        QJsonValue code = json.value("code");
        QJsonValue data = json.value("data");
        if(code.isUndefined() || code.toDouble() != 1 || data.isUndefined() || !data.isObject()){
            QMessageBox::warning(this, "wearing", "json数据转换错误");
            exit(100);
        }

        QJsonObject info = data.toObject();

        /*
    info.insert("name", "xiaoming");
    info.insert("age", 18);
    info.insert("height", 185);
    info.insert("weight", "75Kg");
    */

        QJsonValue name = info.value("name");
        QJsonValue age = info.value("age");
        QJsonValue height = info.value("height");
        QJsonValue weight = info.value("weight");
        if(name.isUndefined() ||
                age.isUndefined()||
                height.isUndefined()||
                weight.isUndefined()){
            QMessageBox::critical(this, "error", "接口错误");
            exit(100);
        }

        QString strname = name.toString();
        int intage = age.toInt();
        int intheight = height.toInt();
        int intweight = weight.toInt();

        QString strinfo = "info:";
        strinfo += "\nname:"+strname;
        strinfo += "\nage:"+QString::number(intage, 10);
        strinfo += "\nintheight:"+QString::number(intheight, 10);
        strinfo += "\nintweight:"+QString::number(intweight, 10);
        QMessageBox::information(this, "infotojson", strinfo, QMessageBox::Yes);

    }else{
        QMessageBox::warning(this, "str2jsondoc", "json解析失败");
        exit(100);
    }
相关推荐
纨妙26 分钟前
python打卡day59
开发语言·python
wuxuanok33 分钟前
Web后端开发-请求响应
java·开发语言·笔记·学习
Sally璐璐1 小时前
IPSAN 共享存储详解:架构、优化与落地实践指南
开发语言·php
像风一样的男人@1 小时前
python --货车装厢问题
开发语言·python
Humbunklung1 小时前
Rust枚举:让数据类型告别单调乏味
开发语言·后端·rust
Y1nhl1 小时前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
OEC小胖胖1 小时前
深入理解 Vue.js 响应式原理及其在 Web 前端开发中的应用
开发语言·前端·javascript·vue.js·web
qq_401700411 小时前
C语言中位运算以及获取低8位和高8位、高低位合并
c语言·开发语言·算法
yanjiaweiya2 小时前
云原生-集群管理
java·开发语言·云原生