前言:
现时咱们对“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的方法。包括QJsonDocument 、QJsonObject 、QJsonArray,当使用这些方法时许包含它们的头文件。
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格式转换文本