json这个小朋友熟悉又陌生,今天给同学们好好讲讲QT是如何使用json的,一句话:简单

1、什么是json?

A:json就是个<key,value>字符串

①一个json对象

{"name":"xupeidong","age":"18"}

②一个json数组里面嵌套json对象

[
{"price": "1", "name": "1", "id": "1"},
{"price": "2", "name": "2", "id": "2"},
{"price": "3", "name": "3", "id": "3"}
]

2、QT里面如何使用json

#include <QJsonDocument>   //解析类,用于将json转换为QByteArrar,或从QByteArray解析出json
#include <QJsonArray> // 封装json数组:["1","2","3"]
#include <QJsonObject> // 封装json对象:{"name": "111","pass": 222}
#include <QJsonParseError> //错误类

①json对象

组装:

QJsonObject json;
json.insert("name", "111");
json.insert("pass", 222);
QJsonDocument doc;
doc.setObject(json);
QByteArray byte = document.toJson(QJsonDocument::Compact);

解析:

QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(byte, &error);
if(error.error == QJsonParseError::NoError)
{
if(doc.isObject())
{
QJsonObject obj = doc.object();
if(obj.contains("name"))
    {
       QJsonValue value = obj.take("name");
       qDebug() << value.toString();
    }
}
}

②json数组

组装:

格式:"[\"000\",\"111\"]"
QJsonArray json;
json.insert(0, "000");
json.insert(1, "111");
QJsonDocument doc;
doc.setArray(json);
QByteArray byte = doc.toJson(QJsonDocument::Compact);
还可以插入json对象:
格式:"[{\"0\":\"000\"},{\"1\":\"111\"}]"
QJsonArray json;
QJsonObject obj;
obj.insert("0","000");
json.insert(0, obj);
QJsonObject obj1;
obj1.insert("1","111");
json.insert(1, obj1);
QJsonDocument doc;
doc.setArray(json);
QByteArray byte = doc.toJson(QJsonDocument::Compact);

解析:

QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(byte, &error);
if(error.error == QJsonParseError::NoError)
{
if(doc.isArray())
{
QJsonArray array = doc.array();
for(int i=0; i<array.size();i++)
{
QJsonValue value = array.at(i);
}
}
}

QT解析和组装json的更多相关文章

  1. java解析和组装json以及一些方法的理解

    这是一个json格式的字符串 第一种情况(简单格式) String result = "{\"name\":\"小明\",\"age\&qu ...

  2. Qt平台下使用QJson解析和构建JSON字符串

    前言 上一篇介绍了C语言写的JSON解析库cJSON的使用:使用cJSON库解析和构建JSON字符串 本篇文章介绍,Qt开发环境下QJson库的使用示例,JSON解析配合API接口,就可以实现一些有趣 ...

  3. 使用cJSON库解析和构建JSON字符串

    使用cJSON库解析和构建JSON字符串 前言 其实之前的两篇博文已经介绍了json格式和如何使用cJSON库来解析JSON: 使用cJSON库解析JSON JSON简介 当时在MCU平台上使用时,会 ...

  4. Python解析非标准JSON(Key值非字符串)

    采集数据的时候经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的 ...

  5. Gson解析复杂的json数据

    最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...

  6. 使用Gson解析复杂的json数据

    Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...

  7. C# 解析嵌套的json文件.

    概述 今天我同学问我如何转换json文件,没处理过,网上搜了一下,json转excel的很少,反过来倒是有许多人写了工具. json文件的结构大致是这样的: {, , }, , "type& ...

  8. 如何利用.Net内置类,解析未知复杂Json对象

    如何利用.Net内置类,解析未知复杂Json对象 如果你乐意,当然可以使用强大的第三方类库Json.Net中的JObject类解析复杂Json字串 . 我不太希望引入第三方类库,所以在.Net内置类J ...

  9. JSON在线解析,新版本JSON在线解析

    SOJSON,出了新版本的JSON在线解析,真的很好用,可以上下版本.左右版本.效果图如下.它的网址是:http://www.sojson.com/simple_json.html SOJSON集成了 ...

随机推荐

  1. Centos7 Nginx开机启动

    1.简易安装nginx: ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf ...

  2. Javascript高级编程学习笔记(1)—— JS简介

    此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...

  3. [Swift]LeetCode285. 二叉搜索树中的中序后继节点 $ Inorder Successor in BST

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. Th ...

  4. [Swift]LeetCode404. 左叶子之和 | Sum of Left Leaves

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

  5. BBS论坛(二十八)

    28.1.帖子分页功能完成 (1)manage.py 通过命令生成100个帖子,用于测试 @manager.command def create_test_post(): for x in range ...

  6. JVM基础系列开篇:为什么要学虚拟机?

    跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看.所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试.但我经过了几年的学习和实战,我发现其实学习虚拟机并 ...

  7. synchronize 关键字原理

    众所周知 synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象. 同步静态方法,锁的是当前 Class 对象. 同步块,锁的是 () 中的对象 ...

  8. influxdb使用说明

    前言 influxdb是目前比较流行的时间序列数据库. 何谓时间序列数据库?什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等. ...

  9. 通过LRU实现通用高效的超时连接探测

    编写网络通讯都要面对一个问题,就是要把很久不存活的死连接清除,如果不这样做那死连接最终会占用大量内存影响服务运作!在实现过程中一般都会使用ping,pong原理,通过ping,pong来更新连接的时效 ...

  10. Jexus~webApi程序的部署几个小坑

    今天上午写了Jexus~Linux环境下的部署,下午去实现了一个,出现了一些问题,下面总结一下. 一 首先要对jexus进行修改/usr/jexus/jws 删除下面的这行,解决csc文件未找到问题 ...