XML与Json比较

XML与JSON解析


一、XML与JSON是什么?

XML 和 JSON 是现今互联网中最常用的两种数据交换格式。。虽然这两种格式的设计目标并不相同,但它们常常用于同一个任务,也就是数据交换中。XML 和 JSON 的文档都很完善,并没有哪一个比另一个更强,只是各自适用的领域不用

一、XML

(1)XML定义

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。

(2)XML语法格式:

  1. XML文档声明在这里插入图片描述

  2. 标记 ( 元素 / 标签 / 节点)
    包括开始标记:在这里插入图片描述

结束标记:在这里插入图片描述
标记名称:自定义名称,必须遵循以下命名规则:
1.名称可以含字母、数字以及其他的字符
2.名称不能以数字或者标点符号开始
3.名称不能以字符 “xml”(或者 XML、Xml)开始
4.名称不能包含空格,不能包含冒号(:)
5.名称区分大小写

注意事项:
1.一个XML文档中, 必须有且且仅允许有一个根标记.
2.标记可以嵌套, 但是不允许交叉.
3.标记的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
4.标记名称允许重复
5.标记除了开始和结束 , 还有属性. 标记中的属性, 在标记开始时 描述, 由属性名和属性值 组成.
6.注释不能写在文档文档声明前,注释不能嵌套注释

(3)XML的几种解析方式

1.SAX解析
2.DOM解析
3.JDOM解析
4.DOM4J解析

二、JSON

(1)JSON定义:

JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。

(2)JSON语法格式

在这里插入图片描述
1.一个对象, 由一个大括号表示。
2.括号中 描述对象的属性,通过键值对来描述对象的属性。
3.键与值之间使用冒号连接, 多个键值对之间使用逗号分隔。
4.键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错,而JS能正确解析。)
5.键值对的值, 可以是JS中的任意类型的数据。

(3)数组格式:

在这里插入图片描述

(4)Gson与FastJson(重点)

<1>Gson

是谷歌公司推出的,能将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象,属于现在市面上常用的一种。

1.将对象转换为JSON字符串
步骤:
(1). 引入JAR包 (可上官网下载)
(2). 编写代码即可:
在这里插入图片描述
例子:

public class demo1 {
    public static void main(String[] args) {
        //1.创建Gson对象
        Gson g = new Gson();
        //2.转换
        book b = new book("100", "金苹果", "种苹果");
        String s = g.toJson(b);
        System.out.println(s);

    }
}

输出结果为:在这里插入图片描述
2.将JSON字符串转换为对象:

(1). 引入JAR包
(2). 编写如下代码
在这里插入图片描述
例子:
下面展示一些 内联代码片

public class DEMO2 {
    public static void main(String[] args) {
        //创建Gson对象
        Gson g = new Gson();
        //转换
        //book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果\"}",book.class);
        HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果\"}", HashMap.class);
        System.out.println(data.get("id"));
    }
}

<2>FastJson:

是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
1.将对象转换为JSON字符串
(1)引入JAR包
(2)编写如下代码
在这里插入图片描述
例子:

public class demo3 {
    public static void main(String[] args) {
        //fastjson
        book book = new book("1002","唐诗三百","阿萨德法规和健康");
        //1.转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

2.将JSON字符串转换为对象

(1)引入JAR包
(2)编写如下代码
在这里插入图片描述
例子:在这里插入图片描述

二、XML与JSON的优缺点

1.XML的优缺点

优点:
1.格式统一,符合标准。

2.容易与其他系统进行远程交互,数据共享比较方便。

3.ML 的树形结构让它易于结构化,浏览器也让用户可以自行展开或折叠树中的元素,这简直就是调试的福音。

4.可以记录混合内容。

缺点:

1.XML文件庞大,文件格式复杂,传输占带宽。

2.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;

3.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;

4.服务器端和客户端解析XML花费较多的资源和时间。

2.JSON的优缺点

优点:
1.JSON 比 XML 简洁得多。
2.在不考虑大小的情况下使用 JSON 执行序列化和反序列化的速度显著优于使用 XML。
3.JSON 的处理在 CPU 资源的使用上优于 XML。
4.对对象和数组的表述和 宿主语言中的数据结构相对应。
5.JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

缺点:
1.没有XML那么通用性
2.手写难度比XML难

总结

编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读。
编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值