Qt扫盲-QJsonObject理论总结

news/2024/7/4 1:46:55 标签: QJsonObject, Qt解析json, json, qt5

QJsonObject理论总结

  • 一、概述
  • 二、常用操作
  • 三、注意事项

一、概述

QJsonObject类封装一个JSON对象。JSON对象是键值对的列表,其中键是唯一字符串值由QJsonValue表示

体现在Json字符串里就是用 { } 括号括起来的部分就是 QJsonObject 对象。

{
    "total": 200,
    "doc": {
		"book": "青年大学习", 
		"remark": "今天就学完"
    },
    "data": [
        {
            "avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
            "logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
        },
        {
            "avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
            "logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
        },
        {
            "avatar": "http://dummyimage.com/498x200.png/6e4a6b/247832",
            "logo": "http://dummyimage.com/100x200.png/0a257b/2a1f0c",
        }]
}

像上面最外面的括号括起来的就是一个 QJsonObject 对象, doc 字段里的 值也是一个对象, 在data里就是一个对象列表。

二、常用操作

QJsonObject可以与QVariantMap进行转换,也是一个互相转换的过程。

// Map -> QJsonObject
fromVariantHash(const QVariantHash &hash)
fromVariantMap(const QVariantMap &map)

// QJsonObject -> Map
toVariantHash() const
toVariantMap() const

我们也可以对 QJsonObject 进行 增删改查

增:insert()
删:remove()
改:value() 或者 [ ]
查:contains()

像 value() 和 [ ] 使用前必须要注意,使用contains() 去查看是否具有这些键,因为这个改的函数会默认没有键就会添加键并赋值。

我们可以使用size()、insert()和remove()查询(key, value)对的数量,并使用标准c++迭代器模式对其内容进行迭代。

像还有其他比较有用的接口如

isEmpty() 查询是否为空;
keys() : 返回所有的键;
length() :对象的个数

三、注意事项

QJsonObject是一个隐式共享类,只要文档没有被修改,它就与创建它的文档共享数据。

可以通过QJsonDocument在对象和基于文本的JSON之间进行转换。


http://www.niftyadmin.cn/n/5095579.html

相关文章

CSS 效果:多列文字,第一行对齐,flex方式元素被挤压

如图效果&#xff1a;2列&#xff0c;第一列只有一行&#xff0c;第二列多行。要求第一行对齐 实现&#xff1a;使用flex 如果不配置flex-shrink的话&#xff0c;第一列会被挤压 给第一列&#xff1a;备注配置压缩属性&#xff1a; flex-shrink&#xff1a;0。 <!DOCTYPE…

06-spring的beanFactoryPostProcessor的执行

文章目录 1. 接口BeanFactoryPostProcessor1.1 英文说明及要点2. BeanDefinitionRegistryPostProcessor3. 执行逻辑4. 几个重要实现类1. 接口BeanFactoryPostProcessor 1.1 英文说明及要点 Factory hook that allows for custom modification of an application context’s b…

[NewStarCTF 2023] web题解

文章目录 WEEK1泄漏的秘密Begin of UploadBegin of HTTPErrorFlaskBegin of PHPR!C!E!EasyLogin WEEK2游戏高手include 0。0ez_sqlUnserialize&#xff1f;Upload again!R!!C!!E!! WEEK1 泄漏的秘密 打开题目&#xff0c;提示有敏感信息泄露 直接扫一下目录&#xff0c;发现有…

javascript使用jsonp数据跨域传输获取,这样传输不受限制,没有像xhr那样必须先设置header()才行,但这样跨域会有风险比如恶意代码

//getmsg.php文件,这里的域名为www.xuejq.mm/getmsg.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

竞赛选题 深度学习YOLO安检管制物品识别与检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&…

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错&#xff0c;安装完成引入from pdf2docx import Converter运行也可能报错&#xff0c;可以根据报错提示看缺少那些库&#xff0c;先卸载pip uninstall xxx,使用pip install python-docx -i htt…

myeclipse 恢复默认工作布局

如何设置恢复到Myeclipse的默认视图布局_myeclipse工作区布局复位-CSDN博客

4.Vue-Vue调用第三方接口

题记 用vue调用第三方接口&#xff0c;以下是全部代码和操作流程。 寻找第三方接口网站 推荐&#xff1a;免费API - 提供免费接口调用平台 (aa1.cn) 下面的代码以下图中的接口为例 调用第三方接口代码 TestView.vue文件如下&#xff1a; <template> <div > <…