XML Json ProtoBuf 格式比较
对于常用的数据交换格式的学习记录比较
基本描述
XML
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
Json
Json: JavaScript Object Notation, JS 对象简称,是一种轻量级的数据交换格式。
ProtoBuf
ProtoBuf:是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。学习使用
应用场景
比较点 | XML | Json | ProtoBuf | 对比 |
---|---|---|---|---|
拓展性 | 很好,可通过自定义约束规则实现想要的结构,结构标准 | 一般,相对于xml,json新增数据结构的拓展上比较方便,不能指定约束性规则 | 需要添加字段转换成对应平台语言 | 对比来看,如果需要很好的横向拓展,并带有一定的约束性建议选择XML,如果需要的是纵向的数据内容的拓展建议使用Json |
数据交互 | DOM结构,内容传输占用带宽较多 | DOM结构,相对XML简洁不少,目前应用较多 | 占用资源最少 | 如果是比较稳定的(高要求)传输格式建议使用ProtoBuf(需要序列化和反序列号),如果需要较多的拓展需求使用XML(数据传输要求较低),普通情况建议使用Json(较通用),参考 |
可视化 | 可是效果一般,对普通人不友好 | 可视效果较好,易读 | 没有可视性,需要反序列化才可以读取内容 | 如果具有可视性要求建议使用Json |
易用性 | 使用相对较麻烦,需要Dom结构化操作 | 使用简单 | 使用相对较麻烦,需要转换对应语言平台、序列号、反序列化操作 | 追求易用性建议使用Json |
结构解析 | 解析有Dom(整体解析)和SAX(流式解析),SAX对大数据量解析支持较好 | JSON只提供整体解析方案,这种方法只在解析较少的数据时才能起到良好的效果 | 需要配合反序列号,适合量级不是太大的数据 | 一般小数据量使用 Json 、ProtoBuf都可以,对应大数据量的结构XML是首选 |
结论
结合应用场景的要求来看,各自都有所适合的场景,没有好与不好只是适不适合,选择需要使用者做好斟酌。
- 如果需要实现自定义拓展性的效果,如设计一套流程图工具、设计审批流程,XML就是最好的选择。
- 如果需要高效的网络数据交互,建议使用使用,ProtoBuf.
- 如果只是一般的请求响应应用,Json就够啦,简单易用,一般场景最佳选择。
正文到此结束