json反/序列化的优劣势

Json作为业内(web)公认的序列化协议

  • 对于跨平台跨语言的问题解决的很好
  • 可调试性好,在线解析工具支持的比较好。但是作为代价的就是保密性不佳
  • 数据量相比来讲小很多,在传输和解析(同样也depends on解析的代码)的速度上算得上是最优选择
  • 可拓展性好,对于业务频繁的更换,也能随时切换自如
  • json到obj的转化实际上是程序员通过标准化的代码来取代了序列化协议中的IDL文件,而这个文件的作用就是描述每一个属性的信息;然而json的数据就是对应着一个obj的各个属性,所以就省去了IDL compiler的角色了。
  • 不过另外一个问题就是在某些语言中解析Json转化成对应语言中的某种结构的方式有所不同,例如在Java中,解析的方式是通过reflection来实现的,众所皆知反射带来的性能缺失问题,尤其当数据量比较大的时候而且对与数据的实时性要求较高例如ms级别的请求,Json来作为序列化协议就无能为力了,这个时候就可以参考Thrift项目了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。

flat string -> java model class(POJO):
语法解析 : flat str –> jsonObj(JSONTokener是核心类处理语法解析逻辑)
反射遍历变量 : jsonObj –> POJO(通过传入的class反射遍历变量, 把JSONObject的value一个个填坑到pojo里面)