当前位置: 首页 > news >正文

XML与JSON的区别?各自有哪些优缺点?

JSON和XML都是数据传输格式,它们有哪些区别,又都有些什么优缺点呢?零度带领大家来分析分析。

一、先来看看两者的定义

1.XML的定义

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言 (SGML) 的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

2.JSON的定义

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

二、两者之间的区别

1.编码方面的区别

JSON的编码更为清晰且冗余更少些,而XML比较适合于标记文档。JSON网站提供了对JSON语法的严格描述,只是描述较简短。JSON更适于进行数据交换处理。

2.编码可读性之间的区别

XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读。

三、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,Per,PHP,Python,Ruby等语言服务器端语言,便于服务器端的解析
4. 在PHP世界,已经有PHP-JSON和JSON-PHP出现了,便于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能够直接生JSON格式,便于客户端的访问提取
5. 因为JSON格式能够直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护
6.相当稳定。JSON 的附加内容将成为超集

缺点:

1. 没有XML格式这么推广的深入人心和使用广泛,没有XML那么通用性
2. JSON格式目前在Web Service中推广还属于初级阶段

转载于:https://www.cnblogs.com/lingdublog/p/6483367.html

相关文章:

  • android手机rootROM下载地址
  • 顶级程序员的心得
  • 多功能PCIE交换机之十:单NT的恢复
  • c++重载和
  • 为什么文件名要小写?
  • 设计模式之——抽象工厂模式
  • 第八十课、多线程中的信号与槽(下)------------------狄泰软件学院
  • Eclipse在线安装hibernate tools插件
  • Laravel 实践之路: 数据库迁移与数据填充
  • Git与TortoiseGit基本操作
  • CHIL-ORACLE-创建非空约束
  • JavaScript思维导图之字符串函数
  • JS实现OO机制
  • Sql Server数据批量更新
  • 「面试题」如何实现一个圣杯布局?
  • Javascript编码规范
  • javascript从右向左截取指定位数字符的3种方法
  • JS题目及答案整理
  • learning koa2.x
  • Linux链接文件
  • MySQL-事务管理(基础)
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React Transition Group -- Transition 组件
  • SpringBoot几种定时任务的实现方式
  • storm drpc实例
  • Vue.js 移动端适配之 vw 解决方案
  • 欢迎参加第二届中国游戏开发者大会
  • 简单数学运算程序(不定期更新)
  • 今年的LC3大会没了?
  • 聊聊flink的TableFactory
  • 前端面试之闭包
  • 思维导图—你不知道的JavaScript中卷
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 详解移动APP与web APP的区别
  • 赢得Docker挑战最佳实践
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​马来语翻译中文去哪比较好?
  • #100天计划# 2013年9月29日
  • #android不同版本废弃api,新api。
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (四)鸿鹄云架构一服务注册中心
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .CSS-hover 的解释
  • .NET和.COM和.CN域名区别
  • .net网站发布-允许更新此预编译站点
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ C++ ] 继承
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)