原创

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就够啦,简单易用,一般场景最佳选择。

dobuger

正文到此结束