Java中的数据传输格式JSON和XML
在⽹络层,客户端和服务端建⽴连接之后就可以传输数据。传输数据的时候,为了双⽅都可以识别,需要拟定⼀个双⽅都能解析的数据交互格式。
数据传输格式
从物理本质上来说,⽹络传输其实是通过⼀系列的线路经过电路调整变化,依据⽹络传输协议进⾏通信的过程。java中常⽤的数据传输格式有 JSON 、 XML、HTML 、YML等(前两者⽐较多见)。
数据传输需要考虑到以下问题:
larger1. ⽹络数据⼤⼩
⽹络数据的⼤⼩影响带宽的占⽤,当服务器承受⾼并发的数据传输时,⽹络流量会达到峰值(过⼤会占满带宽)影响服务器的使⽤效率和⽤户体验,所以数据传输过程中,应尽量减少冗余数据,节省带宽,提⾼传输效率。
python解析json文件2. ⽹络数据安全性
客户端和服务器交互的⼤多数数据都是对外界隐藏的,所以⽹络传输过程中的选择数据格式要考虑数据安全性。
3. 实现复杂度
数据传输过程中需要对信息进⾏序列化和反序列化 ,实际开发中也要注意数据结构的可扩展性和可维护性。
4. 协议通⽤性
通常情况下,客户端和服务端处于不同的运⾏环境下,因此传输的数据要具备跨平台的特性,能够实现同步平台之间的跨平台通信。
JSON
概念
JSON(JavaScript Object Notation)是⼀种轻量级的数据交换格式。具有良好的可读和便于快速编写的特性。可在不同平台之间进⾏数据交换。JSON采⽤兼容性很⾼的、完全独⽴于编程语⾔的⽂本格式,对众多编程语⾔⽐较友好(兼容性),同时也具备类似于C语⾔(包括C,
C++, C#, Java, JavaScript, Perl, Python等)的习惯体系的⾏为。这些特性使JSON成为理想的数据交换语⾔。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的⼀个⼦集。
语法特征
数据都是以键值对的形式表⽰,⽤冒号隔开
数据之间⽤逗号隔开
⼤括号保存JSON对象,对象内可有多个键值对
中括号保存JSON数组,数组内可有多个对象
优点
具有⾃我描述性(数据格式⽐较简单),易于读写,格式都是压缩的,占⽤带宽⼩。易于解析与⽣成 。
使⽤Javascript语法来描述数据对象,但是JSON仍然独⽴于编程语⾔和平台。JSON解析器和JSON库
⽀持许多不同的编程语⾔JSON格式能直接为服务器端代码使⽤,⼤⼤简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
可以⽤JSON传输⼀个简单的String,Number,Boolean,也可以传输⼀个数组,或者⼀个复杂的Object对象。curses怎么读
Java中JSON的解析
JSON官⽹给出多种JSON构造和解析⼯具:org.json和Json-lib。同时也有⼀些开源(解析)库提供,例如Google的Gson、阿⾥的Fastjson 以及Spring框架默认的Jackson等等,此处不多讲。
XML
概念
XML(Extensible Markup Language)可扩展标记语⾔。XML是当前编程中最为流⾏的数据交换格式,拥有跨平台、跨语⾔的优势。⽤于标记⽂件使其具有结构性的标记语⾔,可以⽤来标记数据、定义数据类型,能对具结构性的⽂件进⾏标记,可以对⽂档和数据进⾏结构化处理。XML使⽤DTD(document type definition)⽂档类型定义来组织数据;格式统⼀,跨平台和语⾔,早已成为业界公认的标准。通过XML 可以更准确地搜索,更好地描述⼀些事物,更⽅便地传输或存储数据。主要⽤于描述数据和⽤作配置⽂件。
XML是标准通⽤标记语⾔ (SGML) 的⼦集,⾮常适合Web传输。XML 提供统⼀的⽅法来描述和交换独⽴于应⽤程序或供应商的结构化数据。
语法特征
⾸⾏是 XML 声明:<?xml version="1.0" encoding="UTF-8"?>,它定义 XML 的版本 (1.0) 和所使⽤的
编码 。
在XML中数据都是放在⼀对标签内,标签名可以随意写。
XML ⽂档形成⼀种树结构。必须包含根元素,该元素是所有其他元素的⽗元素。它的元素形成了⼀棵⽂档树。这棵树从根部开始,并扩展到树的最底端。
优点
格式统⼀,符合标准。
XML⽂档通过纯⽂本的形式进⾏存储,独⽴于硬件或者软件,数据共享更加容易。
XML⽂档可以很容易地在不同的平台间传输数据,具有很好平台兼容性,同时降低数据交换复杂性,更容易扩展。
缺点
XML⽂档庞⼤,⽂件格式复杂,传输占带宽。
服务器端和客户端都需要花费资源和时间来解析XML⽂档,导致服务器端和客户端代码变得复杂且不
易维护。
Java中XML的解析
XML的解析更复杂些,选择最适合的第三⽅⽀持的解析库,选择最佳的⽅式可以提⾼解析效率。可以借助技术。
JSON和XML的区别
可读性(描述性)0x000000a5
两者都具备很好的可读性,JSON和XML的可读性可谓不相上下,⼀边是建议的语法,⼀边是规范的标签形式,XML可读性相对较好些。JSON对数据的描述性⽐XML较差。
可扩展性
两者同样都具备很好的扩展性,但是XML的扩展性是有局限的,XML内元素变得意味着其解析代码也要变化。JSON的扩展性不受约束。
编解码难度(解析⼿段)
JSON和XML同样拥有丰富的解析⼿段。XML已经流⾏了好多年,拥有丰富的编码⼯具。在Java中既可以⽤JAXB,⼜可以⽤XmlBeans,⼜或者dom4j、jdom等把数据写到xml⽂档中。当然JSON也有丰富的解析库,例如JSON官⽹提供的和Json-lib,Google的Gson、阿⾥的Fastjson以及Spring框架默认的Jackson等。
数据体积及传输效率
JSON相对于XML来讲,数据的体积⼩,传输速度更快些。
数据交互
JSON与JavaScript的交互更加⽅便,更容易解析处理,更好的数据交互。感应电机为什么叫异步电机
XML与JSON数据格式⽐较
关于轻量级和重量级
免费写java的软件轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?体现在解析⽅⾯,XML⽬前设计了两种解析⽅式:DOM和SAX。
DOM是把⼀个数据交换格式XML看成⼀个DOM对象,需要把XML⽂件整个读⼊内存,这⼀点上JSON和XML的原理是⼀样的,但是XML要考虑⽗节点和⼦节点,这⼀点上JSON的解析难度要⼩很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
SAX不需要整个读⼊⽂档就可以对解析出的内容进⾏处理,是⼀种逐步解析的⽅法。程序也可以随时终⽌解析。这样,⼀个⼤的⽂档就可以逐步的、⼀点⼀点的展现出来,所以SAX适合于⼤规模的解析。这⼀点,JSON⽬前是做不到得。
所以,JSON和XML的轻/重量级的区别在于:
JSON只提供整体解析⽅案,⽽这种⽅法只在解析较少的数据时才能起到良好的效果;XML提供了对⼤规模数据的逐步解析⽅案,这种⽅案很适合于对⼤量数据的处理。
关于数据格式编码及解析难度
1. 编码⽅⾯
虽然XML和JSON都有各⾃的编码⼯具,但是JSON的编码要⽐XML简单,即使不借助⼯具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML⼀样,JSON也是基于⽂本的,且它们都使⽤Unicode编码,且其与数据交换格式XML⼀样具有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON⽹站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML⽐较适合于标记⽂档,⽽JSON却更适于进⾏数据交换处理。
2. 在解析⽅⾯。
在普通的web应⽤领域,开发者经常为XML的解析伤脑筋,⽆论是服务器端⽣成或处理XML,还是客户端⽤ JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应⽤中,⾄少就⽬前来说XML仍有不可动摇的地位。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。