在Qt中如何通过QJson 解析json数据
2013-07-31 14:20
801 查看
在Qt中如何通过QJson 解析json数据
Delete instructional text in italicThis article explains how to ... Replace the abstract text with a short paragraph (or sentence) describing
what the topic covers.
Enter article metadata as described below. Note that this template can be placed anywhere in the
article. Do not remove parameters that you do not use
介绍
本文将介绍如何在Qt中使用QJson解析json数据,首先我们先看下什么是json.
json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
基础结构
JSON建构于两种结构:“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
基础示例
1.JSON 表示名称 / 值对的方式 按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对": < code>{ "firstName": "Brett" } </code> 这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间: firstName=Brett 但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如: { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系.
2 表示数组 当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。如果使用 JSON,就只需将多个带花括号的记录分组在一起:
{ "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"}, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ]}
这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
{ "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] }
QJson
QJson是一个基于Qt的开发包用来将JSON数据解析成QVariant对象,Json 数组讲被映射成QVariantList实例,其他对象映射为QVariantMap实例
代码实现
设置pro文件LIBS += -lqjson
引入头文件
#include <qjson/parser.h>
代码中使用 QJson::Parser
QJson::Parser parser; bool ok; QString query = "[{\"rid\":\"102432\", \"pid\":\"1000\", \"username\":\"dxy\"},{\"rid\":\"000\", \"pid\":\"10200\", \"username\":\"dxy2\"}]"; QVariant result = parser.parse(query.toAscii(), &ok); if(ok) { QVariantList mylist = result.toList(); foreach (QVariant plugin, mylist) { QVariantMap mymap = plugin.toMap(); qDebug() << "[" << mymap["rid"].toString() << mymap["pid"].toString() << mymap["username"].toString() << "]"; } else qDebug()<<"error occuring";
代码下载
File:TestQJson.zip
相关链接
Qt开发
Add categories below. Remove Category:Draft when the page is complete or near complete
相关文章推荐
- JSON - 使用cJSON 解析Qt通过UDP发送的JSON数据
- 使用QJson解析Qt通过UDP发送的JSON数据
- Qt中如何解析Json数据
- 如何在Qt C++中解析JSON数据并使之被QML应用
- 如何通过jquery解析从服务器端返回的json数据
- JSON - 使用cJSON 解析Qt通过UDP发送的JSON数据
- c# 通过访问URL,获取并解析远程服务端返回的复杂Json数据
- 如何把Ext.data.store里的数据一次性用JSON传给后台(添加了后台解析部分)
- Linux下如何使用jq解析json数据
- 如何通过Java的Web服务器把DataSet或DataTable数据通过json格式传回给C#的客户端
- 案例解析运营如何通过数据分析优化产品
- 如何使用JSON Framework库解析与生成json数据
- JS解析json数据(如何将json字符串转化为数组)
- can总线(三)--如何通过波形解析can总线数据
- 如何解析key为数字的string类型的Json数据
- JavaScript如何处理解析JSON数据详解
- 自定义标签属性数据通过json对象解析得到所需数据方法
- 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- 通过GSON 解析Json数据,但是不创建JAVA Bean的方式,获取对应的值
- html中通过js获取接口JSON格式数据解析以及跨域问题