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);
    }
相关推荐
qianbo_insist8 分钟前
c++ python 共享内存
开发语言·c++·python
今天背单词了吗98022 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
CoderPractice28 分钟前
C#控制台小项目-飞行棋
开发语言·c#·小游戏·飞行棋
Coding小公仔36 分钟前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
程序猿阿伟37 分钟前
《声音的变形记:Web Audio API的实时特效法则》
开发语言·前端·php
Humbunklung1 小时前
Rust方法语法:赋予结构体行为的力量
开发语言·后端·rust
萧曵 丶1 小时前
Rust 内存结构:深入解析
开发语言·后端·rust
算法练习生2 小时前
Qt核心类QWidget及其派生类详解
开发语言·c++·qt
1024小神2 小时前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows