两者的共同优点是都是文本表示的数据格式,可以跨平台、跨系统交换数据。
就可读性和可扩展性而言,JSON和XML不相上下。
就编码难度而言,JSON略比XML简单,要写好XML最好还是借助XML编辑器,标签的嵌套和配对手动输入来说容易出错。因此,从代码的可维护性角度而言,JSON优于XML。
就内容解析而言,JSON在客户端只要使用eval()便可完成解析,在服务器端有包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言的解析支持,非常简单;而XML则相对复杂,不管在服务器端还是在客户端都需要花费大量的代码来实现解析。
就数据表示和传输性能而言,JSON明显比XML简洁,格式简单,占用带宽少。
就安全性而言,由于大部分Javascript库都是使用eval()来解析数据,存在执行恶意JSON数据的安全漏洞;当然可以使用专门的JSON解析器来避免这个问题。相比,XML更安全一些。
[ XML ]
使用XML作为传输格式的优势:
1. 格式统一, 符合标准。
2. 容易与其他系统进行远程交互, 数据共享比较方便
3.调用将 XML 用作传输的现有服务。
4.使用 XSLT 可以动态转换 XML。这是企业服务总线 (ESB) 方案中的理想功能。
缺点:
1. XML文件格式文件庞大, 格式复杂, 传输占用带宽。
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护。
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码。
4. 服务器端和客户端解析XML花费资源和时间。
[ JSON ]
优点:
1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,浏览器解析快。
2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
3. 构造友好,支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析。
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取。
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护。
6.相当稳定,JSON 的附加内容将成为超集。
缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 通用性没有XML好。
2. JSON格式目前在Web Service中的推广还属于初级阶段。