最近在搞go语言编程,涉及到把数据结构序列化为json,然后想总结下json和xml

1.简单介绍下json

json:是javascript   object Notation

json类似于xml,,JSON 比 XML 更小、更快,更易解析。

json的语法大致如下  数据使用 名/值 对表示

名字固定用字符串表示,放在""内

json的值,可以是  数字,字符串,逻辑值,数组,对象

json中使用大括号保存对象

使用方括号保存数组,

名/值对之间使用  逗号分割

使用json表示一个数据

一般情况下  json表示数据的时候最外面是个{ },代表描述的是一个整体对象,也可以不是,是[ ]是数组,其他的没有见过。

现在有这样的一个场景,一个汽车销售公司,想要把他们销售的各种汽车汇总下,包括汽车的生产公司,汽车名字,汽车销售价格。就可以用json表示如下,这个称为json方式1:

{"cars":[{"company":"德国大众","name":"奥迪","price":"1600"},
{"company":"美国通用汽车","name":"雪弗兰","price":"1800"}]
}

当然也可以简化下,直接这样这个称为json方式2

[{"company":"德国大众","name":"奥迪","price":"1600"},{"company":"美国通用汽车","name":"雪弗兰","price":"1800"}]

但是这样感觉稍稍有点不太清楚。

2.简单的介绍下xml

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签

XML 被设计为具有自我描述性

XML必须有根标签

XML 文档形成一种树结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有元素均可拥有子元素:

<root><child><subchild>.....</subchild></child>
</root>

父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。

所有元素均可拥有文本内容和属性(类似 HTML 中)。

同样的上面json中表示的例子,我们现在用xml表示下:

<cars>

<car>

<company>德国大众</company>

<name>奥迪</name>

<price>1600</price>

</car>

<car>

<company>美国通用汽车</company>

<name>雪弗兰</name>

<price>1800</price>

</car>

</cars>

这个能看出来,xml表示的会更大,但是结构相对json更好阅读些。

3.json和xml的转化 有个在线转化工具,大家参考https://www.sojson.com/json2xml/

我只想说下转化后的注意事项,否则感觉有时候想不太清楚。

举个例子:

<cars>

<car>

<company>德国大众</company>

<name>奥迪</name>

<price>1600</price>

</car>

<car>

<company>美国通用汽车</company>

<name>雪弗兰</name>

<price>1800</price>

</car>

</cars>

我把这个输入到转化工具中,那么会转化出我上面说的两种中的哪个呢,感觉应该是比较简单的那个json方式2

转化结果如下:确实按照我们的json方式2进行转化的

[{"company": "德国大众","name": "奥迪","price": "1600"},{"company": "美国通用汽车","name": "雪弗兰","price": "1800"}
]

那反过来如果我们把json转化成xml呢,我们把上面这个json转化成xml会是怎样的呢

<?xml version="1.0" encoding="UTF-8"?>
<a><e class="object"><company type="string">德国大众</company><name type="string">奥迪</name><price type="string">1600</price></e><e class="object"><company type="string">美国通用汽车</company><name type="string">雪弗兰</name><price type="string">1800</price></e>
</a>

因为xml的语法必须有根标签,所以他添加了一个根标签<a></a>

我们再把json方式1转化成xml看会是什么样呢

<?xml version="1.0" encoding="UTF-8"?>
<o><cars class="array"><e class="object"><company type="string">德国大众</company><name type="string">奥迪</name><price type="string">1600</price></e><e class="object"><company type="string">美国通用汽车</company><name type="string">雪弗兰</name><price type="string">1800</price></e></cars>
</o>

很显然这种转化出的xml和我们的本意更加的贴近一些,而且能判断出 cars这个标签的class是array,所以json表示法1更通用一些,表示法2更简单些。

所以我们想表示一个xml结构的时候尽量采用第一种,下面再写个例子

就是在刚才的例子之上,我想把这个汽车零售商店的名字加上去,代表这个商店里的东西

那么xml的结构可以表示如下:


<xiaomingjia>
<cars><car><company>德国大众</company><name>奥迪</name><price>1600</price></car><car><company>美国通用汽车</company><name>雪弗兰</name><price>1800</price></car></cars>
</xiaomingjia>

然后我们用json表示如下方式3和方式4

方式3,不简化,正常表示

{"xiaomingjia":{"cars":[{"company":"德国大众","name":"奥迪","price":"1600"},{"company":"美国通用汽车","name":"雪弗兰","price":"1800"}]
}}

方式4进行简化,表示为

[[{"company": "德国大众","name": "奥迪","price": "1600"},{"company": "美国通用汽车","name": "雪弗兰","price": "1800"}
]]

这个我解释下,之前没有添加<xiaomingjia>这个标签的时候,我相当于是一个数组,而添加完标签之后相当于增加了一个数组

,这里要注意最外层不能改为{},改变之后不符合json的语法了就会报错。

很显然,从json向xml转化的时候方式3语意更强,转化的结果更为接近,转化结果如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<o><xiaomingjia class="object"><cars class="array"><e class="object"><company type="string">德国大众</company><name type="string">奥迪</name><price type="string">1600</price></e><e class="object"><company type="string">美国通用汽车</company><name type="string">雪弗兰</name><price type="string">1800</price></e></cars></xiaomingjia>
</o>

<xiaoming>的标签是保留的,只是最外面多了一层跟目录。同时那个car目录也是有的,就是换了个名字,<e>标签,class是object,就是默认情况下,json数组里的元素要是对象。如果我们认为的想去显示为car,那么我们可以这样做,json结构如下所示

{"xiaomingjia":{"cars":[{"cars":{"company":"德国大众","name":"奥迪","price":"1600"}},{"cars":{"company":"美国通用汽车","name":"雪弗兰","price":"1800"}}]
}}

这样的话转为为xml,里面由于json默认数组里的元素是对象,已经添加了一层对象的嵌套,这里又给添加了一层对象,就会多一层嵌套结构,转化为xml后如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<o><xiaomingjia class="object"><cars class="array"><e class="object"><cars class="object"><company type="string">德国大众</company><name type="string">奥迪</name><price type="string">1600</price></cars></e><e class="object"><cars class="object"><company type="string">美国通用汽车</company><name type="string">雪弗兰</name><price type="string">1800</price></cars></e></cars></xiaomingjia>
</o>

json与xml的区别,以及二者之间的转化[一]相关推荐

  1. JSON与XML的区别

    JSON与XML的区别 JSON简介 XML简介 JSON和XML比较 JSON简介   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaS ...

  2. java定义json数组_Java面试题:json该如何定义?json与xml的区别有哪些?

    什么是json Json是一种字符串数据格式,一般用于数据传输格式. json字符串中[]对应JSONArray, {}对应JSONObject json与xml的区别 (1).可读性方面. JSON ...

  3. JSON与XML的区别比较(非常全面)

    1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允 ...

  4. java json转xml_关于JSON与XML的区别比较

    现在互联网上,最流行的两大传输数据的标准就是json和XML了,关于谁是最好的,一直以来都是人们争论的话题,其实各有各的缺点和优点: 1.定义介绍 (1).XML定义 扩展标记语言 (Extensib ...

  5. JSON和XML的区别

    JSON和XML之间的区别是什么?下面本篇文章就来给大家比较一下JSON和XML,介绍JSON和XML之间的区别,希望对大家有所帮助. JSON(JavaScript Object Notation) ...

  6. ajax html xml数据格式,AJAX | 数据格式JSON与XML的区别

    XML与JSON的基本知识 HTML5学堂:XML和JSON是两种经典的数据格式,在AJAX当中的异步加载,申请的文件通常不是html.txt文件,而是JSON和XML.相比JSON文件比较居多.JS ...

  7. 矢量图像和位图图像(一般图像)的区别以及二者之间的转换

    矢量图像和位图图像(一般图像)的区别 矢量图像和一般图像(也称为位图或光栅图像)是两种不同类型的图像格式,它们的主要区别在于图像数据的表现形式和处理方式. 矢量图像 矢量图像是使用数学公式来描述图像的 ...

  8. json与javabean、list、map之间的转化

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: public class Student {//姓名private String name ...

  9. 网站与网址现在还有人没搞清二者之间的区别吗?

    自从开始接触互联网行业之后才发现,其实很多常见的互联网小知识我们是不够清晰明确的,只是模棱两可的知道答案,如果有人进一步"逼问",我们可能就要怀疑自身了.其实这就是对自身知识掌握的 ...

最新文章

  1. MySQL优化--where条件字段的顺序对效率的影响 (02)
  2. Leetcode 344. 反转字符串 (每日一题 20210812)
  3. python测试字符串类型的函数_python-02 数据类型 字符串str
  4. leetcode18. 四数之和
  5. ibm服务器维修站点,IBM 服务器维修
  6. Android ViewPager 重复数据问题的解决方法
  7. python祝福祖国代码_C语言-笔记一
  8. ORA-04043: 对象 dba_data_files 不存在 BUG
  9. php 0x颜色 转换,rgb和十六进制颜色互转
  10. JSP 标准标签库(JSTL)(菜鸟教程)
  11. SpreadJS:一款类Excel开发工具,功能涵盖Excel的 95% 以上
  12. 利用python批量创建文件夹、批量创建文件、批量复制文件到指定文件夹
  13. c语言顺序结构编程题及其答案,C语言编程 顺序结构编程练习题目
  14. 扬声器有小红叉,前置耳机孔没有声音,找不到realtek高清晰音频管理器
  15. MySql基础篇之SQL语句(DDL、DML、DQL、RCL)
  16. 小说里的编程 【连载之十六】元宇宙里月亮弯弯
  17. 程序设计入门C语言 --- 素数和
  18. 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十)
  19. Web项目中完成百度地图GPS定位
  20. android studio 小白使用记

热门文章

  1. DataTable 使用linq方法获得某列分组列表
  2. 当程序员和女朋友说晚安后
  3. Unity PureMVC 之 PureMVC 框架的下载,以及一个简单应用学会使用 PureMVC 框架
  4. MIT计算机博士自述:我为什么要念博士
  5. latex输入带大括号的公式
  6. 全国大学省英语竞赛【A类】剖析
  7. web渗透常见攻击实例
  8. 【害虫远程监测站】织密智能“防控网” ,打造监测“千里眼”
  9. echarts双向柱状图效果实现
  10. PS实用小技巧:把png批量转换成jpg的方法