对于复杂javabean到json串的转换,建议使用FlexJSON

红薯 发布于 2009/01/03 12:56
阅读 4K+
收藏 0

gt-grid自带的那个 javaBean与json的转换工具 能力比较弱
是从官方的参考实现中提取出来的

你可以使用 更强大的 转换json的工具来实现你的需求
http://www.json.org/ 这个页面下面有列表

对于复杂的 json对象的转换 建议大家使用 json-lib 或者是 我此次将要隆重推荐的

FlexJSON .

http://flexjson.sourceforge.net/

很好很强大 喜欢他的api风格(不过也有人讨厌这种风格 呵呵)

举个小例子 : 一个这样的Person类


Java代码
  1. Person p = ...load a person...;  
  2.   
  3. //将person序列化 同时序列化复杂属性 addresses,但是不序列化"phoneNumbers"  
  4. return new JSONSerializer().include("addresses").serialize(p);  
  5.   
  6. // or  
  7.   
  8. //将person序列化 同时序列化 复杂属性 addresses和phoneNumbers  
  9. // 同时对 addresses内的复杂属性zipcode 也进行序列化(这是和上面例子的主要区别)  
  10. return  new JSONSerializer().include("phoneNumbers""addresses.zipcode").serialize(p);  

更多的信息 大家看官网的示例 就能理解.

加载中
0
jing31
jing31

这个跟struts的json-lib-2.1.jar里面的转换用法,哪个效率更好一些呢?

0
jing31
jing31

试了一下,默认这东西是不处理内部包含的list对象的,而且如果list里面放的不是基本数据类型是其他的更为复杂的数据结构的时候,转换出来的东西有点惨不忍睹啊~

还是json-lib转出来的更纯粹一些。

两个各有利弊,json-lib用起来感觉更顺手一些,而且转换出来的json数据优于不会记录复杂数据类型,所以要小一些。

FlexJSON 则会记录复杂数据类型的class信息,所以要大一些,而且在json->javabean的过程中尚未发现如何处理对list的处理。

就像json-lib的:

JSONArray array = JSONArray.fromObject(jsonString);

json-lib在son->javabean的过程中也要制定辅助类型定义map才能搞定,也没有胜出。

举得FlexJSON 在json中存储class信息就应该是为回转的时候做准备的,可惜没有感觉出这方面的优势。

有用的明白的朋友再给指点指点吧~

0
gxj413真身
gxj413真身

可以使用exclude过滤class信息

返回顶部
顶部