当前位置: 首页 > news >正文

[QT编程系列-35]:数据存储 - JSON格式配置数据的存储与通知

目录

1. QJsonObject 

2 QJsonDocument 

3 JSON本文格式

4. JSON示例

5. JASON配置文件示例


1. QJsonObject 

QJsonObject 是Qt的类之一,用于表示 JSON 对象。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在不同系统之间传输和存储数据。

使用 QJsonObject,你可以创建、操作和访问 JSON 对象中的键值对数据。下面是一些常见的 QJsonObject 操作:

  1. 创建一个空的 JSON 对象:

    QJsonObject obj;
    
  2. 添加键值对数据到 JSON 对象:

    obj["name"] = "John";
    obj["age"] = 30;
    obj["email"] = "john@example.com";
    
  3. 从 JSON 对象中获取键值对数据:

    QString name = obj["name"].toString();
    int age = obj["age"].toInt();
    QString email = obj["email"].toString();
    
  4. 检查 JSON 对象中是否包含特定的键:

    if (obj.contains("email")) {// JSON 对象包含键 "email"
    }
    
  5. 从 JSON 对象中移除特定的键值对数据:

    obj.remove("age");
    
  6. 将 JSON 对象转换为 JSON 字符串:

    QJsonDocument doc(obj);
    QString jsonString = doc.toJson(QJsonDocument::Compact);
    

QJsonObject 还支持嵌套使用,即一个 JSON 对象中可以包含另一个 JSON 对象。你可以根据需要进行深度层级的嵌套。

使用 QJsonObject,你可以方便地创建、操作和访问 JSON 数据。这对于与 Web 服务交互、保存和读取配置文件等情景非常有用。记得在使用时先包含 QJsonObject 头文件 (#include <QJsonObject>)。

2 QJsonDocument 

QJsonDocument 是Qt的一个类,用于表示和操作 JSON 文档。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在不同系统之间传输和存储数据。

QJsonDocument 提供了将 JSON 数据解析成树状结构、从树状结构中生成 JSON 数据以及进行其他操作的方法。以下是一些常见的 QJsonDocument 操作:

  1. 将 JSON 字符串解析为 QJsonDocument:

    QString jsonString = "{\"name\": \"John\", \"age\": 30}";
    QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8());
    
  2. 将 QJsonDocument 转换为 JSON 字符串:

    QString jsonString = doc.toJson(QJsonDocument::Compact);
    

    这里的 Compact 参数表示将生成的 JSON 字符串压缩为紧凑的形式,也可以选择 Indented 参数来添加缩进和换行,使其更易读。

  3. 获取 QJsonDocument 的根对象 QJsonObject:

    QJsonObject obj = doc.object();
    
  4. 创建一个空的 QJsonDocument:

    QJsonDocument doc;
    
  5. 将 QJsonDocument 转换为二进制数据进行存储或发送:

    QByteArray jsonData = doc.toBinaryData();
    
  6. 从二进制数据中解析 QJsonDocument:

    QJsonDocument doc = QJsonDocument::fromBinaryData(jsonData);
    

QJsonDocument 还提供了其他一些有用的方法,例如设置和获取文档的元数据,合并多个 JSON 文档等。

使用 QJsonDocument,你可以方便地解析、生成和操作 JSON 数据。这对于与 Web 服务交互、处理配置文件或进行数据交换等情景非常有用。记得在使用时先包含 QJsonDocument 头文件 (#include <QJsonDocument>)。

3 JSON本文格式

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁、易读和易解析的特点。它通常被用于在不同系统之间传输和存储数据。

JSON 文本由键值对构成,使用大括号 {} 表示对象(Object),每个键值对之间使用逗号 , 分隔。键值对由键(Key)和值(Value)组成,使用冒号 : 分隔。

以下是使用 JSON 文本的基本语法规则:

  1. 对象(Object):

    • 使用大括号 {} 包围。
    • 键值对之间使用逗号 , 分隔。
    • 键(Key)必须是一个字符串(String)。
    • 值(Value)可以是字符串、数值、布尔值、对象、数组或 null。
    {"name": "John","age": 30,"hasPets": true,"address": {"street": "123 Main St","city": "New York"},"favoriteFruits": ["apple", "banana", "orange"]
    }
    
  2. 数组(Array):

    • 使用方括号 [] 包围。
    • 数组中的元素之间使用逗号 , 分隔。
    • 元素可以是字符串、数值、布尔值、对象、数组或 null。
    ["apple", "banana", "orange"]
    
  3. 字符串(String):

    • 使用双引号 " 包围。
    • 可以包含任意 Unicode 字符。
    "Hello, World!"
    
  4. 数值(Number):

    • 可以是整数或浮点数。
    42
    3.14
    
  5. 布尔值(Boolean):

    • 只有两个可能的值:true 或 false。
    true
    false
    
  6. 空值(Null):

    • 表示缺少值时使用的特殊值。
    null
    

JSON 文本可以被解析和生成以在不同的编程语言和平台之间传输和处理数据。许多编程语言都提供了内置的 JSON 解析和生成库来处理 JSON 数据。

4. JSON示例

以下是几个常见的 JSON 示例,展示了不同类型的数据结构和数据组织方式:

  1. 简单对象:
{"name": "John","age": 30,"city": "New York"
}

  1. 嵌套对象:
{"name": "John","age": 30,"address": {"street": "123 Main St","city": "New York","postalCode": "10001"}
}

  1. 数组:
{"fruits": ["apple", "banana", "orange"]
}

  1. 嵌套数组:
{"people": [{"name": "John","age": 30},{"name": "Alice","age": 25},{"name": "Bob","age": 35}]
}

  1. 字符串键名和空值:
{"name": "John","city": null
}

  1. 其他数据类型:
{"isActive": true,"balance": 1234.56,"numbers": [1, 2, 3],"metadata": {"createdAt": "2023-07-16","version": 1}
}

这些 JSON 示例展示了不同的数据结构,包括简单对象、嵌套对象、数组,以及各种数据类型,例如字符串、数值、布尔值和空值。这些示例可以根据实际需求进行扩展和修改,以适应具体的数据组织和数据交换需求。

5. JASON配置文件示例

在这个示例中,配置文件分为多个部分/段落,每个部分有不同的配置项。以下是对每个部分的解释:

  1. app 部分包含了应用程序相关的配置项:

    • name:应用程序的名称。
    • version:应用程序的版本号。
    • theme:应用程序的主题样式,可能有 “light” 或 “dark” 等选项。
  2. database 部分包含了数据库连接相关的配置项:

    • host:数据库服务器的主机地址。
    • port:数据库服务器的端口号。
    • username:连接数据库的用户名。
    • password:连接数据库的密码。
  3. log 部分包含了日志记录相关的配置项:

    • level:日志记录的级别,如 “debug”、“info”、“warning” 等。
    • file:日志记录输出的文件名。

通过读取和解析这个 JSON 配置文件,应用程序可以获取和使用配置信息来设定其行为和设置。可以根据实际需求添加或修改配置项,以满足特定应用程序的配置需求。

http://www.lryc.cn/news/104751.html

相关文章:

  • 【Spring】Spring 中事务的实现
  • Linux 学习记录60(ARM篇)
  • 尚硅谷大数据项目《在线教育之采集系统》笔记002
  • 校园跑腿小程序功能分享
  • PHP8的变量-PHP8知识详解
  • 图解TCP 三次握手和四次挥手的高频面试题(2023最新版)
  • 【mysql】Win10安装配置MySQL8.0简要
  • SQL SERVER使用发布订阅同步数据库遇到的坑
  • 3个命令定位CPU飙高
  • Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建
  • 使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录
  • 构建语言模型:BERT 分步实施指南
  • ⛳ Java多线程 一,线程基础
  • 【iOS】多线程 锁问题总结
  • Pytorch深度学习-----神经网络之池化层用法详解及其最大池化的使用
  • Docker啥是数据持久化?
  • CGAL 线段简化算法(2D)
  • 在CentOS 7上挂载硬盘到系统的步骤及操作
  • 螺旋矩阵(JS)
  • C#常用数学插值法
  • ELK日志管理平台架构和使用说明
  • 抖音短视频seo矩阵系统源码开发部署技术分享
  • docker 部署一个单节点的rocketmq
  • MySQL优化
  • 【C++】总结9
  • C++报错 XX does not name a type;field `XX’ has incomplete type解决方案
  • 28.利用fminsearch、fminunc 求解最大利润问题(matlab程序)
  • 图像 检测 - FCOS: Fully Convolutional One-Stage Object Detection (ICCV 2019)
  • C# NDArray System.IO.FileLoadException报错原因分析
  • 快速响应,上门维修小程序让您享受无忧生活