QT中的json(三)

json文件格式、常见c/c++的json库

cjson–生成/解析json文件、cjson 结构体

QT中的json


第三篇 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::NoError0未发生错误
QJsonParseError::UnterminatedObject1对象不正确地终止以右花括号结束
QJsonParseError::MissingNameSeparator2分隔不同项的逗号丢失
QJsonParseError::UnterminatedArray3数组不正确地终止以右中括号结束
QJsonParseError::MissingValueSeparator4对象中分割 key/value 的冒号丢失
QJsonParseError::IllegalValue5值是非法的
QJsonParseError::TerminationByNumber6在解析数字时,输入流结束
QJsonParseError::IllegalNumber7数字格式不正确
QJsonParseError::IllegalEscapeSequence8在输入时,发生一个非法转义序列
QJsonParseError::IllegalUTF8String9在输入时,发生一个非法 UTF8 序列
QJsonParseError::UnterminatedString10字符串不是以引号结束
QJsonParseError::MissingObject11一个对象是预期的,但是不能被发现
QJsonParseError::DeepNesting12对解析器来说,JSON 文档嵌套太深
QJsonParseError::DocumentTooLarge13对解析器来说,JSON 文档太大
QJsonParseError::GarbageAtEnd14解析的文档在末尾处包含额外的乱码

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

参考: https://blog.csdn.net/best_zyj/article/details/78980271

代码示例

参见码云项目:https://gitee.com/orange-ren/SystemCode/tree/master/QJson%E4%BD%BF%E7%94%A8

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值