fastjson实现自省功能优化
发布时间:2020-12-16 19:26:24 所属栏目:百科 来源:网络整理
导读:转载自温少的ITeye博客:http://wenshao.iteye.com/blog/1177410 JSON标准是不支持自省的,也就是说如下的JSON文本,你不知道它是什么类型: Java代码 { "id" : 12 , "name" : "魏嘉留" } fastjson支持传入类型信息,例如: Stringtext=...; //{"id":12,"nam
转载自温少的ITeye博客:http://wenshao.iteye.com/blog/1177410 JSON标准是不支持自省的,也就是说如下的JSON文本,你不知道它是什么类型:
fastjson支持传入类型信息,例如: Stringtext=...;//{"id":12,"name":"魏嘉留"}
如果序列化时,使用WriteClassName的特性,JSON文本是这样: Employeex=...; 上面例子中的JSON文本是: {“@type”:"com.alibaba.demo.Employee","id":带有@type属性的文本将会被自动识别类型,上面的文本可以这样处理: Employeex=(Employee)JSON.parse(text); 这就是Fastjson支持的自省功能。 但是使用WriteClassName之后,json文本的大小增加了许多,这个怎么办呢?fastjson 1.1.6版本将会做优化处理,非必要,不输出类型信息。 classA{ 类A拥有属性B,A和B都是对象,但是反序列化的时候,能够根据Property的类型信息得到B的类型,这时只需要输出A的类型,不需要输出B的类型信息。 例如: {"@type":"com.alibaba.json.demo.A","b":{"id":0}} 在1.1.5之前的版本则会如下: "b":{"@type":"com.alibaba.json.demo.B",sans-serif; font-size:14px; line-height:25px; text-align:left">通过这种办法可以用List<T>类型的属性,由此能够减少冗余不必要的类型信息。 如下是一些测试用例: http://code.alibabatech.com/svn/fastjson/trunk/fastjson/src/test/java/com/alibaba/json/test/bvt/writeClassName/WriteClassNameTest2.java http://code.alibabatech.com/svn/fastjson/trunk/fastjson/src/test/java/com/alibaba/json/test/bvt/writeClassName/WriteClassNameTest_List2.java (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |