龙空技术网

QT——Json的写入

C加加Qt技术开发老杰 259

前言:

现时咱们对“json格式转换文本”大约比较关切,看官们都需要分析一些“json格式转换文本”的相关内容。那么小编也在网摘上汇集了一些对于“json格式转换文本””的相关资讯,希望同学们能喜欢,兄弟们快快来学习一下吧!

1 什么是json

json是轻量级的文本数据交换格式,它具有简洁和清晰的层次结构,易于人阅读和编写,同时也易于机器解析和生成等优势。

json的标准格式包含数组对象

对象用花括号括起来的逗号分割的成员构成,成员是(key)和(value)由逗号分割的键值对组成,键与值由(冒号)隔开。如:

{"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}

数组是由方括号括起来的一组值构成。如:

[3, 1, 4, 1, 5, 9, 2, 6]

也包含如下合法的格式:

{"a": 1, "b": [1, 2, 3]}

[1, 2, "3", {"a": 4}]

1.1 Qt creater写json文件的方法

方案1:

用Qt creater写json的方式很多,笔者初次接触Qt creater时对Qt不熟悉,写的第一份json文件采用了暴力的向文本内append字符的方式,写简单的json文件还好,当json文件比较复杂时,此种方法有一个极大的痛点,总需要去删除最后一个json对象的逗号。而实现起来代码比较冗余。笔者在此不对次方案做更多介绍,也不推荐这种写法。

方案2:

由于之前的方案可行度低,于是我在网上搜索了一下Qt写json的方法,不同的作者有不同的写法,但都调用了Qt自带的读写json的方法。包括QJsonDocumentQJsonObjectQJsonArray,当使用这些方法时许包含它们的头文件。

2 写json

我们知道了可以用**QJsonDocument 、QJsonObject 、QJsonArray **来写json文件,现在我们就来小试牛刀吧。

我们先来完成一个简单的json写入,json格式为如下:

{"name":"zhangsan","age":14}

写入方法1如下:

QJsonDocument json_doc;//创建json文件QJsonObject json_obj;//创建json对象json_obj.insert("name","zhangsan");json_obj.insert("age",14);json_doc.setObject(json_obj);//将json对象转为json文件file.write(json_doc.toJson(QJsonDocument::Indented));//写入文件file.close();

写入方法2如下:

QJsonDocument json_doc;//创建json文件QJsonObject json_obj{        {"name","zhangsan"},        {"age",14}    };json_doc.setObject(json_obj);//将json对象转为json文件file.write(json_doc.toJson(QJsonDocument::Indented));//写入文件file.close();

两种方式各有其特点吧,方法2更直观一点,笔者更喜欢选用方法1一点,按个人喜好就行。现在我们来完成一个稍微复杂一点的json格式写入。

json格式如下:

{"name":"zhangsan","frinds":  [    {"name":"lisi"},    {"name":"wanger"}  ]}

先来看看这个json格式,最外层为一个花括号为json对象,里面有name和friends两个key,friends的value为一个数组,数组内包含了两个对象。因为json的构建都是由内向外层构建,因此jsondocument的构建方法为:

①构建最内层的两个jsonobject分别存放对象内的键值对

②构建一个jsonarray

③将两个jsonobject放入jsonarray中

④构建最外层的jsonobject

⑤将jsonarray放入最外层jsonobject中

写入方法如下:

QJsonObject Member1, Member2;//创建两个朋友对象//初始化两个朋友名字Member1["name"] = "lisi";Member2["name"] = "wanger";QJsonDocument json_doc;//创建json文件QJsonObject json_obj;//创建json对象QJsonArray girlfrinds_array;//存放两个朋友的数组//将两个朋友对象加入到数组内girlfrinds_array.append(Member1);girlfrinds_array.append(Member2);json_obj.insert("name","zhangsan");json_obj.insert("girlfrinds",girlfrinds_array);json_doc.setObject(json_obj);//将json对象转为json文件file.write(json_doc.toJson(QJsonDocument::Indented));//写入文件file.close();

标签: #json格式转换文本