论坛首页 Web前端技术论坛

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

浏览 13703 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-19  
我自己写的json序列化,
因为之前我做远程调用框架的时候做了一个xml序列化,已经比较成熟了。
自己改了下,就可以出来json对象。
0 请登录后投票
   发表时间:2008-10-20  
一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。
0 请登录后投票
   发表时间:2008-10-20  
Scriptlet 写道
一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。


不太喜欢DWR的配置文件的形式。转换的细节用配置不方便,重用性也不好。

尤其是后台是Hibernate的话,要解决性能问题,建议最好自己扩展实现或封装一下JSON-lib,目前没有很好的可以拿来直接用的JSON序列化的框架。
1 请登录后投票
   发表时间:2008-10-20  
Scriptlet 写道
一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。


请问您说的string的格式有些乱指的是什么意思?
0 请登录后投票
   发表时间:2008-10-20  
icewubin 写道
include("phoneNumbers", "addresses.zipcode")


一年前我也写了个很简陋的,稍稍扩展了JSON-lib,虽然参数格式不太一样,意思是一样的,fins你自己大可扩展一下,没什么难度的,就是个递归,每次把当前参数去除第一层就行了。

比如第一层参数是
"phoneNumbers", "addresses.zipcode"

数据结构随便了,List、array都可以。

当递归到addresses的时候,写个很多简单的工具类,把上述参数变成

"zipcode"


然后递归调用
new JSONSerializer().include("zipcode").serialize(addresses)


简单吧,只要有思路,实现起来就很简单了。


吴斌,你也天天在上面呀,你这个东西,我天天在用,还改了不少地方,确实很好用.就是lazyloading的时候,比较累人.

有人需要的话,可以发给大家.留个地址先...东西比较多,有很多约定.
0 请登录后投票
   发表时间:2008-10-20  
zhaobohao 写道

吴斌,你也天天在上面呀,你这个东西,我天天在用,还改了不少地方,确实很好用.就是lazyloading的时候,比较累人.

有人需要的话,可以发给大家.留个地址先...东西比较多,有很多约定.


拜托别把我真名四处流传。

你说的Lazyloading要根据情况来的,比如要预先加载多对一的address对象,写HQL的时候就要预先JOIN address表(如果join比N+1慢的话就不不要这样了,N=每页的数据量),这样带上“address”参数就不会触发N+1查询问题。

一对多另说了,甚至于我认为在List中的单个元素的一对多序列化的需求是不合理的,UI设计必须调整。

就是因为“简陋”、“有很多约定”,所以就不发给大家,发了也没人看得懂啊,呵呵。还是建议其他人根据自己的项目特点自己实现,这样自己有其他需求,改起来也得心应手。我写的东西配合我们自己的框架很好用,给别人就未必合适,比如用iBatis的用户就完全没必考虑序列化的时候产生的延迟加载问题。

0 请登录后投票
   发表时间:2008-10-20  


引用

你说的Lazyloading要根据情况来的,比如要预先加载多对一的address对象,写HQL的时候就要预先JOIN address表(如果join比N+1慢的话就不不要这样了,N=每页的数据量),这样带上“address”参数就不会触发N+1查询问题。

一对多另说了,甚至于我认为在List中的单个元素的一对多序列化的需求是不合理的,UI设计必须调整。

就是因为“简陋”、“有很多约定”,所以就不发给大家,发了也没人看得懂啊,呵呵。还是建议其他人根据自己的项目特点自己实现,这样自己有其他需求,改起来也得心应手。我写的东西配合我们自己的框架很好用,给别人就未必合适,比如用iBatis的用户就完全没必考虑序列化的时候产生的延迟加载问题。



我现在搞一堆多对多的东西,写起来省力.但是看后台查询语句的时候,那叫一个惨!!!,看来,也只能多写点代码,把N+1的问题解决 掉...本来打算省点力气...
0 请登录后投票
   发表时间:2008-10-20  
fins 写道
有时间我是要写一个
因为 这个软件其实也是有一些bug的 而且 必须要jdk1.5

icewubin 写道



Java代码

include("phoneNumbers", "addresses.zipcode")  include("phoneNumbers", "addresses.zipcode")一年前我也写了个很简陋的,稍稍扩展了JSON-lib,虽然参数格式不太一样,意思是一样的,fins你自己大可扩展一下,没什么难度的,就是个递归,每次把当前参数去除第一层就行了。 比如第一层参数是


Java代码

"phoneNumbers", "addresses.zipcode"  "phoneNumbers", "addresses.zipcode"数据结构随便了,List、array都可以。 当递归到addresses的时候,写个很多简单的工具类,把上述参数变成


Java代码

"zipcode"  "zipcode"然后递归调用


Java代码

new JSONSerializer().include("zipcode").serialize(addresses)  new JSONSerializer().include("zipcode").serialize(addresses)简单吧,只要有思路,实现起来就很简单了。


0 请登录后投票
   发表时间:2008-10-21  
zhaobohao 写道


我现在搞一堆多对多的东西,写起来省力.但是看后台查询语句的时候,那叫一个惨!!!,看来,也只能多写点代码,把N+1的问题解决 掉...本来打算省点力气...


对呀,抓数据出现不能优化的不合理,就是UI需求出问题了。
0 请登录后投票
   发表时间:2008-10-24  
想用FlexJSON 代替json-lib 的但发现FlexJSON不带 json to javabean功能。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics