正如我们所知,XML和JSON 是现今互联网中最常用的两种数据交换格式。XML和JSON都是经过时间上和技术上的检验才得到如今的地位,初学Java的我们在现实开发中到接触XML和JSON时很容易混淆,那么XML和JSON到底有何不同呢?本文我们就来对比一下XML和JSON,看看XML和JSON的区别。
XML格式最早是由W3C 于1996年提出。JSON 格式由Douglas Crockford于2002年提出。虽然这两种格式的设计目标并不相同,但它们常常用于同一个任务,也就是数据交换中。XML 和 JSON 的文档都很完善,且都同时具有人类可读性和机器可读性。不以成败论英雄,事实上,这两种格式并没有哪一个比另一个更强,只是各自适用的领域不同罢了。
我们首先来说XML:
XML和JSON最大的不同在于 XML 可以通过在标签中添加属性这一简单的方法来存储元数据metadata。而使用 JSON 时需要创建一个对象,把元数据当作对象的成员来存储。虽然二者都能达到存储元数据的目的,但在这一情况下 XML 往往是更好的选择,因为 JSON 的表达形式会让客户端程序开发人员误以为要将数据转换成一个对象。
XML 的另一个优势在于大多数的浏览器可以把它以具有高可读性和强组织性的方式展现给用户。XML的树形结构让它易于结构化,浏览器也让用户可以自行展开或折叠树中的元素,这简直就是调试的福音。
XML 对比 JSON 有一个很重要的优势就是它可以记录混合内容。例如在XML中处理包含结构化标记的字符串时,程序员们只要把带有标记的文本放在一个标签内就可以了。可因为 JSON 只包含数据,没有用于指明标签的简单方式,虽然可以使用处理元数据的解决方法,但这总有点滥用之嫌。
说完了XML我们再来说JSON:
JSON 自身也有很多优点。其中最显而易见的一点就是 JSON 比 XML 简洁得多。因为 XML 中需要打开和关闭标签,而 JSON 使用名称/值对表示数据,使用简单的 { 和 } 来标记对象,[和 ] 来标记数组,, 来表示数据的分隔, : 表示名称和值的分隔。就算是使用gzip 压缩,JSON 还是比 XML 要小,而且耗时更少。首先,由于 JSON 文件天生的简洁性,与包含相同信息的 XML 相比,JSON 总是更小,这意味着更快的传输和处理速度。第二,在不考虑大小的情况下,两组研究 表明使用JSON 执行序列化和反序列化的速度显著优于使用 XML。第三,后续的研究指出 JSON 的处理在 CPU 资源的使用上也优于 XML。研究人员发现 JSON 在总体上使用的资源更少,其中更多的 CPU 资源消耗在用户空间,系统空间消耗的 CPU 资源较少。
JSON 的另一个优点在于其对对象和数组的表述和宿主语言中的数据结构相对应,例如对象以及对象组成的数组等等。虽然 XML 里也能表达这些数据结构,也只需调用一个函数就能完成解析,而往往需要更多的代码才能正确的完成 XML 的序列化和反序列化处理。而且 XML 对于人类来说不如 JSON 那么直观,XML 标准缺乏对象、数组的标签的明确定义。当结构化的标记可以替代嵌套的标签时,JSON 的优势极为突出。JSON 中的花括号和中括号则明确表示了数据的结构,当然这一优势也包含前文中的问题,在表示元数据时JSON 不如XML准确。虽然XML支持命名空间与前缀,但这不代表 JSON 没有处理命名冲突的能力。比起 XML 的前缀,它处理命名冲突的方式更简洁,在程序中的处理也更自然。在 JSON 里,每一个对象都在它自己的命名空间中,因此不同对象内的元素名称可以随意重复。在大多数编程语言中,不同的对象中的成员可以包含相同的名字,所以 JSON 根据对象进行名称区分的规则在处理时更加自然。
事实上,XML和JSON作为Java基础的内容,看完了本文对于XML和JSON对比分析,等于又重新学习了一遍XML和JSON,温故而知新不是没有道理的,是不是感觉似乎又学会了新的东西呢,快来本站的Java基础教程继续学习新知识吧!
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习