QT中的json(三)
发布日期:2021-07-26 10:17:48 浏览次数:6 分类:技术文章

本文共 2088 字,大约阅读时间需要 6 分钟。


第三篇 QT中的json

  • QJson 常见的类

    QJsonDocument

    QJsonObject
    QJsonArray
    QJsonValue – QT中对应的JSON 中 6 种基本数据类型
    QJsonParseError

  • QJsonDocument —用于读和写 JSON 文档

    解析器非常快且高效,并将 JSON 转换为 Qt 使用的二进制表示。

    • QJsonDocument::fromJson()基于文本表示的JSON 文档转化为 QJsonDocument
    • toJson()QJsonDocument反向转化为文本。
    • !isNull() 查询已解析文档的有效性
    • isArray()isObject()查询一个 JSON 文档是否包含一个数组或一个对象
    • array()object() 检索包含在文档中的数组或对象,然后读取或操作。
  • QJsonArray — 封装了一个 JSON 数组

    JSON 数组是值的列表。可以通过从数组中插入和删除QJsonValue 来操作列表。

    一个 QJsonArray 可以和一个 QVariantList 相互转换。

    • size()来查询条目的数量
    • insert() 在指定索引处插入值
    • removeAt()来删除指定索引的值。
  • QJsonObject — 封装了一个 JSON 对象

    一个 JSON 对象是一个“key/value 对”列表,key 是独一无二的字符串,value由一个 QJsonValue 表示。

    一个 QJsonObject 可以和一个 QVariantMap 相互转换。

    • size() 来查询“key/value 对”的数量
    • insert()插入“key/value对”
    • remove()删除指定的 key。
  • QJsonValue — 封装了一个值

    JSON 中的值有 6 种基本数据类型:

    • bool(QJsonValue::Bool)
    • double(QJsonValue::Double)
    • string(QJsonValue::String)
    • array(QJsonValue::Array)
    • object(QJsonValue::Object)
    • null(QJsonValue::Null)

    一个值可以由任何数据类型表示。此外,QJsonValue 有一个特殊的标记来表示未定义的值。

    • isUndefined()查询是否为未定义的值
    • type()isBool()isString()查询值的类型
    • toBool()toString()等转化成相应的存储类型
  • QJsonParseError — 用于在 JSON 解析中报告错误

    枚举 QJsonParseError::ParseError,描述 JSON 文档在解析过程中所发生的错误类型

常量 描述
QJsonParseError::NoError 0 未发生错误
QJsonParseError::UnterminatedObject 1 对象不正确地终止以右花括号结束
QJsonParseError::MissingNameSeparator 2 分隔不同项的逗号丢失
QJsonParseError::UnterminatedArray 3 数组不正确地终止以右中括号结束
QJsonParseError::MissingValueSeparator 4 对象中分割 key/value 的冒号丢失
QJsonParseError::IllegalValue 5 值是非法的
QJsonParseError::TerminationByNumber 6 在解析数字时,输入流结束
QJsonParseError::IllegalNumber 7 数字格式不正确
QJsonParseError::IllegalEscapeSequence 8 在输入时,发生一个非法转义序列
QJsonParseError::IllegalUTF8String 9 在输入时,发生一个非法 UTF8 序列
QJsonParseError::UnterminatedString 10 字符串不是以引号结束
QJsonParseError::MissingObject 11 一个对象是预期的,但是不能被发现
QJsonParseError::DeepNesting 12 对解析器来说,JSON 文档嵌套太深
QJsonParseError::DocumentTooLarge 13 对解析器来说,JSON 文档太大
QJsonParseError::GarbageAtEnd 14 解析的文档在末尾处包含额外的乱码

  基本的用法比较简单,细节很关键,建议在处理的过程中启用严格模式,例如:先通过 QJsonParseError::NoError 判断转化 JSON 文档无误,再进行解析。在解析过程中,先判断 QJsonValue 是否为对应的类型如 isObject(),再通过 toObject() 转化。

参考:

代码示例

转载地址:https://blog.csdn.net/qq_39557240/article/details/103425352 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:大并发服务器框架设计
下一篇:cjson--生成/解析json文件、cjson 结构体(二)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月22日 17时52分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java三元运算和if,Java三元运算符与<JDK8兼容性中的if / else 2019-04-21
graphql-php enum,php – 如何在不写长查询的情况下查询所有的GraphQL类型字段? 2019-04-21
php date 函数用法,php中date()日期时间函数使用方法 2019-04-21
php除法获取整数和余数,PHP除法取整和取余数 2019-04-21
java迷宫路径,Java中的迷宫路径查找器 2019-04-21
php substr cnblog,php中substr用法示例 2019-04-21
php链接怎么截取,PHP 截取网页中的固定种子链接 2019-04-21
iis运行不起来php报500,解决IIS上安装thinkphp6运行报500错误 2019-04-21
php ajax上传图片过大500错误,javascript – JQuery AJAX文件上传错误500 2019-04-21
matlab 图中的legend,matlab中legend加图示命令的使用 2019-04-21
PHP exec xargs 不执行,Linux中的xargs命令及示例 2019-04-21
php 枚举cookie内容,php设置和获取cookie 2019-04-21
单防区扩展模块怎么用_AB罗克韦尔自动化Micro800 扩展 I/O模块型号及功能介绍 2019-04-21
java矩阵类_Java泛型——泛型矩阵类 2019-04-21
java车牌正则表达式_车牌正则表达式 2019-04-21
wordpress4.9.4 mysql_WordPress 将不再支持 PHP4 和 MySQL 4 2019-04-21
安卓是用java语言写的吗_android开发是用java语言吗? 2019-04-21
java 符号 t_java – 运算符”不能应用于’T’,’T’表示有界泛型类型 2019-04-21
用matlab写出信源熵,计算离散信源的熵matlab实现 2019-04-21
php表单yii2,Yii2创建表单(ActiveForm)方法详解 2019-04-21