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);
    }
相关推荐
Pocker_Spades_A1 天前
Python快速入门专业版(二十六):Python函数基础:定义、调用与返回值(Hello函数案例)
开发语言·python
island13141 天前
【C++框架#5】Elasticsearch 安装和使用
开发语言·c++·elasticsearch
周周记笔记1 天前
学习笔记:Python的起源
开发语言·python
Cachel wood1 天前
信息检索、推荐系统模型排序质量指标:AP@K和MAP@K
windows·搜索引擎·json·推荐系统·搜索
懒大王95271 天前
uni-app + Vue3 + EZUIKit.js 播放视频流
开发语言·javascript·uni-app
_extraordinary_1 天前
Java 多线程进阶(四)-- 锁策略,CAS,synchronized的原理,JUC当中常见的类
java·开发语言
JasmineX-11 天前
数据结构——顺序表(c语言笔记)
c语言·开发语言·数据结构·笔记
java搬砖工-苤-初心不变1 天前
OpenResty 配合 Lua 脚本的使用
开发语言·lua·openresty
IT灰猫1 天前
C++轻量级配置管理器升级版
开发语言·c++·设计模式·配置管理·ini解析
Swift社区1 天前
如何解决 Vue2 前端项目为何无法访问本地资源(chunk.js 加载一直 pending/转圈)
开发语言·前端·javascript