大话xml,json文件

xml,json是我们经常用到的文件格式,我在想那么他们到底和txt文件有什么区别.以下为个人的理解,有错误的地方欢迎指教.

他们到底有什么区别呢—-有什么区别呢—-有什么区别呢——
想了很久得出的结论就是它们本质上没区别.是不是很惊讶,别急着争辩,先听我说.

txt,xml,json.这三种文件后缀分别是它们自己,而且它们都可以用文本工具打开,我想这就足以作为它们本质上没有区别的论据之一了(其实是它们本质没有区别的外在最佳证明).

它们都是文件,本质都是IO操作
大一开始学编程语言的时候就已经有有IO这块了,归根到底,它们还是IO操作.从大家最先接触到的就是对控制台的IO操作,其实一开始我根本不能理解为什么在代码里面写下

cout<<"hello world!\n";

“hello world!”就会在控制台出现,后来接触文件流才理解整个IO体系。数据的传输需要两个源,数据传输是有向的(java的NIO是可以双向传输的),cout命令表明数据源的两端是内存和控制台,而且是从内存到控制台传输.想必文件流大家都清楚了,是内存和文件之间的数据流动.

它们的区别在于内容的格式
还没开始接触xml,json之前呢,我对文件的操作一直都是txt文件,每次无论是想从文件写数据,还是从文件读数据,最烦的一件事就是设计数据内容的格式了,因为这样才会便于读和写.比如存储多个相同类的数据,你一定会按顺序把类中的成员变量存储,这样需要的时候就按顺序初始化对应的类.我知道文件内容的格式(我的文件之所以没有存储键,只存储值是因为我心中知道内容的格式,知道第一个一定是这个键,第二个是那个键,其实还是有键这个东西,只不过在我心里),但是大家是不是发现局限性了,因为文件内容的格式只有我知道,因为是我设计的吗,这样子就不利于推广,平时作为小程序来存储数据还可以.所以慢慢的就有了xml,json的这种基于txt的文件了,只不过他们对数据的内容格式进行了刚性规定,xml文件和json文件都有自己内容的固定格式(或者说语法),有自己的格式那么就有对应的解析方式了.所以他们的解析方式本质上是由它们的内容格式决定的,如果你喜欢,也可以自己写一个针对xml文件和json文件的解析框架.
现在xml和json的解析框架都比较成熟了,其实也没必要自己写,想xml的解析框架就有dom,pull,sax;json的有JsonObject,Gson.

xml和json文件格式区别:
xml的文件格式或者语法,个人觉得比json文件的好,但是相对应的字符量就大一些,xml和json传输的时候是把里面的内容作为一大堆的字符串进行传输的,所以可读性好但是字符量就大了.json语法简洁,阅读性差些.所以还是看需求决定使用哪种格式.

dom,pull,sax:
dom为文档对象模型,解析的时候是将整个文件加载如内存的。
pull和sax感觉差不多,都是逐个结点解析(从上到下逐个节点,就是先序遍历),但是android的saxAPI封装的比较好,是事件驱动(将解析开始,解析开始结点,读取结点内容,解析结束结点,解析借宿都封装成对应的函数)的,但是感觉灵活性就降低了.

JsonObject和Gson区别:
形式上区别就是
JsonObject的流程
String(文件的全部内容)->JsonArray(解析成JsonObject类型的数组)->得到单个JsonObject.

GSon的流程

1.自己写一个自定义的类。类里面的成员变量名要和json里面的单元对象元素一一对应。
2.将json文件的全部内容和自定义类类型的数组作为参数传给解析器即可.
3.最后从自定义类类型的数组取单个的类对象.

小结:JsonObject和Gson是两个不同的json文件解析框架,JsonObject是将json文件的内容解析成一个一个JsonObject,而Gson是解析成一个个的自定义类对象,其实本质还是一样的.

这是我自己的思维模式,不知道你们能不能看懂.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值