json基础知识与Qt中的应用

简介: json基础知识与Qt中的应用

1 什么是json


JSON的全称是”JavaScript Object Notation”JS 对象简谱)


意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式


是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。


2 Qt 5 新增加了处理 JSON 的类


Qt 5 新增加了处理 JSON 的类,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块



3 QJsonDocument类


1.提供了读写Json文档的方式


  • JsonDocument::fromJson() ---------- 得到json文档对象


  • 转换为json对象


object()-------------------对键值对操作


  • 转换为json数组


array();


2.json字符串 -> json对象/json数组


3.json对象/json数组 -> json字符串


4 QJsonObject QJsonArray QJsonValue


  • 在使用json对象或json数组对象得到对应的value之后,该value值并不是最终的数据类型而是一个QJsonValue类型的属性,我们必须通过该对象判断该类型的实际类型,然后在将其转换为对应的数据类型:


  • 类型判断相关的成员方法:


bool isArray() const  是否为json数组
bool isBool() const 是否为布尔类型
bool isDouble() const 是否为浮点类型
bool isNull() const 是否为空
bool isObject() const 是否为json对象
bool isString() const  是否为字符串类型


5 案例


json的读写


    // 创建json对象
    QJsonObject obj;
    QJsonObject sub;
    sub.insert("IP", QJsonValue("192.168.166.25"));
    sub.insert("port", "9990");
    obj.insert("server", QJsonValue(sub));
    // 内存中的json数据写入内存
    QJsonDocument doc(obj);
    // 将json对象转换为 字符串
    QByteArray data = doc.toJson();
    // 字符串写入文件
    QFile file("D:\\temp.json");
    file.open(QIODevice::WriteOnly);
    file.write(data);
    file.close();
    // 读json文件
    QFile file("D:\\temp.json");
    file.open(QIODevice::ReadOnly);
    QByteArray data = file.readAll();
    file.close();
    // 使用json文档对象加载json字符串
    QJsonDocument doc = QJsonDocument::fromJson(data);
    // 判断是数组还是对象
    if(doc.isObject())
    {
        QJsonObject obj = doc.object();
        QJsonValue value = obj.value("server");
        if(value.isObject())
        {
            QJsonObject subobj = value.toObject();
            // 取值
            QString ip = subobj.value("IP").toString();
            QString port = subobj.value("port").toString();
            qDebug() << ip << port;
        }
    }
相关文章
|
16天前
|
开发框架 Linux API
Qt:构建高效且用户友好的跨平台应用
Qt:构建高效且用户友好的跨平台应用
|
16天前
|
开发框架 网络协议 数据库
Qt:构建跨平台应用的强大框架
Qt:构建跨平台应用的强大框架
|
1月前
|
存储 JSON NoSQL
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(下)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(下)
|
1月前
|
JSON 前端开发 JavaScript
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
|
2月前
|
Web App开发 编解码 安全
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
180 4
|
2月前
|
算法 数据可视化 程序员
【Qt UI】调色板QPalette类在Qt编程中的应用
【Qt UI】调色板QPalette类在Qt编程中的应用
29 0
|
2月前
|
存储 算法 API
【Qt 基本类】QDateTime类在C++中的应用与深度解析
【Qt 基本类】QDateTime类在C++中的应用与深度解析
45 0
|
2月前
|
算法 Unix 调度
【Qt 线程】深入探究QThread线程优先级:原理、应用与最佳实践
【Qt 线程】深入探究QThread线程优先级:原理、应用与最佳实践
36 0
|
2月前
|
JSON 程序员 数据格式
深入探索 “JSON for Modern C++“:安装、构建与应用
深入探索 “JSON for Modern C++“:安装、构建与应用
43 0
|
1月前
|
JSON JavaScript 前端开发
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(中)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(中)