聊聊JSON与XML的各自优缺点

1,262 阅读2分钟

JSON已成web数据传输的首要选择,今天就来谈谈XML与JSON,包括两者的相同点与共同点,以及优缺点。

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

JSON

一种轻量级的数据交换格式,是JavaScript的子集,由于是一种语言层面的规范,因此得以更好地在客户端解析使用。

  • 数据格式:数字、布尔、字符串(双引号)、对象、数组、null,没有undefined。

  • 良好的API支持(JSON.stringify,JSON.parse),可以在客户端实现javascript对象 与 JSON字符串之间的相互转化

  • stringify(jsonObj,function(){ //对序列化做过滤限制 },space);space用于对序列号结果做缩进结构化,增强易读性。

  • parse(jsonString,function(){ //对解析做过滤限制 })

  • JSON的序列化和解析目标如果是对象或数组,需要注意的是会首先解析这个主题(key值为""),每遇到一个对象成员,都会递归式地进行序列化或解析,首先处理好对象本身,才能过滤对象成员。因此,要做限制的时候需要注意。

///错误写法
var jsonObj = { name:"Andrew",sex:"male" }
JSON.stringify(jsonObj,function(key,value){
    if( key === "name" ){
        return value
    }
})
//返回 : undefined


//正确写法
var jsonObj = { name:"hezebing",sex:"male" }
JSON.stringify(jsonObj,function(key,value){
    if(key === ""){
        //对象本身
        return value
    }else if( key === "name" ){
        return value
    }
})
//返回 : "{"name":"hezebing"}"

XML

一种可扩展的标记语言,优点在于描述数据凸显其结构性,在良好的UI层面增加新元素非常简单而清晰。

  • 描述一个实体(person),没有限定属性或者子元素来定义实体的属性(身高,年龄,性别等等),带来了很多的灵活性,也造成了不同程序之间的差异习惯,可扩展意味着"多形态",某种层面的不统一。

  • 当服务端发送XML文档至客户端后,需要客户端做解析为DOM树再做节点遍历来获取数据。

<school name="北大">
    <colleages>
        <!-- 经济学院 --> 
        <economy></economy>
        <!-- 新增 达摩学院 --> 
        <damo></damo>
    </colleages>
</school>

总结

json轻便、解析简单,对客户端更加友好。

XML更加笨重,解析为DOM树并遍历节点来取数据,优点是结构清晰,扩展性好。