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. [Swift]LeetCode39. 组合总和 | Combination Sum

    Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...

  2. [Swift]LeetCode161. 一次编辑距离 $ One Edit Distance

    Given two strings S and T, determine if they are both one edit distance apart. 给定两个字符串S和T,确定它们是否都是是一 ...

  3. [Swift]LeetCode199. 二叉树的右视图 | Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  4. [Swift]LeetCode235. 二叉搜索树的最近公共祖先 | Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  5. c# 关于页面生命周期

    每次遇到这个问题,总是含含糊糊的说不清楚,今天就在这里统一整理一下,以便以后的查看. 一般来说,页要经历下表概述的各个阶段.除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于 ...

  6. 如何看待Google欲回归中国事件

    最近一条新闻刷爆了朋友圈: 8 月 6 日,<人民日报>在它位于 Facebook.Twitter 社交媒体平台的官方账号上发布了一篇标题为<Stability prerequisi ...

  7. hadoop分布式搭建

    1.新建三台机器,分别为: hadoop分布式搭建至少需要三台机器: master extension1 extension2 本文利用在VMware Workstation下安装Linux cent ...

  8. SqlServer突破亿级数据操作瓶颈(出处:转载)

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  9. 程序员如何面试才能拿到offer

    一.概述 面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会 ...

  10. PV UV QPS 并发数

    TPS(Transactions Per Second):每秒事务数 QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少 ...