转载Json和Xml的区别,以及它们的底层是如何处理的
XML:可扩展标记语言 JSON:轻量级的数据交换格式
区别:
1.可读性方面:基本相同,Xml的可读性较好些;
2.可扩展性方面:都有较好的扩展性;
3.编码难度方面:json的编码较容易些;
4.解码难度:json的解码难度基本为0,xml需要考虑子节点和父节点;
5.数据体积方面:json相对于xml来讲,数据体积小,传递的速度会快些;
6.数据交互方面:json与JavaScript的交互更加方便,更容易解析处理,交互也会更好;
7.数据描述方面:xml对数据描述性较好;
8.传输速度方面:json的速度远远大于xml。
底层原理:
JSON底层原理:
遍历字符串中的字符,最终根据格式规定的特殊字符,比如{},[],:,等进行区分。{}是一个字典的开始,[]是一个数组的开始,:是字典的键和值的分水岭,最终结果是讲json数据转化为字典,字典中的值可能是字典,数组,字符串。
XML底层原理:
xml解析常用的解析方法有两种:DOM和SAX解析。
DOM解析采用建立树形结构的方式访问xml文档,而SAX采用事件模型。DOM解析把xml文档转化成为一个包含其内容的树,并可以对树进行遍历。使用DOM解析时需要处理整个xml文档,所以对性能和内存的要求比较高。SAX解析xml文档时可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存要求较低,因为它让开发人员自己决定所要处理的tag。
转载Json和Xml的区别,以及它们的底层是如何处理的的更多相关文章
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
- JSON与XML的区别比较(转)
原文链接:JSON与XML的区别比较 1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以 ...
- JSON与XML的区别比较
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...
- JSON与XML的区别
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...
- [转]JSON与XML的区别比较
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...
- 什么是json? 什么是xml?JSON与XML的区别比较
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Prog ...
- Andriod项目开发实战(2)——JSON和XML的区别
详情见: 1.http://www.cnblogs.com/SanMaoSpace/p/3139186.html 2.http://www.cnblogs.com/yank/p/4028266.htm ...
- JSON和XML的区别
- json和xml的两者区别
服务器端返回给客户端的数据一般都是JSON格式,JSON数据以键值的形式保存,数据之间以逗号分隔,{}表示对象,[]表示数组.JSON数据解析方案有四种,JSONKit,SBJson,TouchJso ...
随机推荐
- Day2-Python基础2---字符串操作
一.字符串操作 特性:不可修改 name = "my \tname is {name} and i am {year} old" #首字母大写.capitalize print(n ...
- Java-API-POI-Excel:HSSFWorkbook Documentation
ylbtech-Java-API-POI-Excel:HSSFWorkbook Documentation 1.返回顶部 1. org.apache.poi.hssf.usermodel Class ...
- nignx 重启
sudo /opt/nginx/sbin/nginx -s stop sudo /opt/nginx/sbin/nginx
- 【转】link_to中delete无效的问题解决
问题一 1.问题描述:点击[删除]链接之后,跳到了show页面,完全没有弹出框提示 <%= link_to "删除", product_path(product.id), : ...
- Android APP使用系统签名
Android M平台在写APP测试使用MediaRecoder通过AudioSource.VOICE_CALL来录制通话上下行音的时候,需要权限 <uses-permission androi ...
- DAY7-面向对象之继承与派生
一.初识继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代 ...
- Contentprovider的创建和使用流程概述
首先在provider类中继承并实现provider的几个必要方法 -- boolean onCreate(),用来执行一些初始化的工作. -- cursor query(Uri, String[], ...
- 第4章 springboot热部署 4-1 SpringBoot 使用devtools进行热部署
/imooc-springboot-starter/src/main/resources/application.properties #关闭缓存, 即时刷新 #spring.freemarker.c ...
- day69-oracle 21-PLSQL课后作业
- 2018网络预选赛 徐州G 线段树
线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为 ...