精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-19
我自己写的json序列化,
因为之前我做远程调用框架的时候做了一个xml序列化,已经比较成熟了。 自己改了下,就可以出来json对象。 |
|
返回顶楼 | |
发表时间:2008-10-20
一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。
|
|
返回顶楼 | |
发表时间:2008-10-20
Scriptlet 写道 一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。
不太喜欢DWR的配置文件的形式。转换的细节用配置不方便,重用性也不好。 尤其是后台是Hibernate的话,要解决性能问题,建议最好自己扩展实现或封装一下JSON-lib,目前没有很好的可以拿来直接用的JSON序列化的框架。 |
|
返回顶楼 | |
发表时间:2008-10-20
Scriptlet 写道 一般java到json对象的转换如果有双向引用就会出现死循环。这点dwr做的不错,但是json string的格式有些乱。
请问您说的string的格式有些乱指的是什么意思? |
|
返回顶楼 | |
发表时间: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的时候,比较累人. 有人需要的话,可以发给大家.留个地址先...东西比较多,有很多约定. |
|
返回顶楼 | |
发表时间:2008-10-20
zhaobohao 写道 吴斌,你也天天在上面呀,你这个东西,我天天在用,还改了不少地方,确实很好用.就是lazyloading的时候,比较累人. 有人需要的话,可以发给大家.留个地址先...东西比较多,有很多约定. 拜托别把我真名四处流传。 你说的Lazyloading要根据情况来的,比如要预先加载多对一的address对象,写HQL的时候就要预先JOIN address表(如果join比N+1慢的话就不不要这样了,N=每页的数据量),这样带上“address”参数就不会触发N+1查询问题。 一对多另说了,甚至于我认为在List中的单个元素的一对多序列化的需求是不合理的,UI设计必须调整。 就是因为“简陋”、“有很多约定”,所以就不发给大家,发了也没人看得懂啊,呵呵。还是建议其他人根据自己的项目特点自己实现,这样自己有其他需求,改起来也得心应手。我写的东西配合我们自己的框架很好用,给别人就未必合适,比如用iBatis的用户就完全没必考虑序列化的时候产生的延迟加载问题。 |
|
返回顶楼 | |
发表时间:2008-10-20
引用 你说的Lazyloading要根据情况来的,比如要预先加载多对一的address对象,写HQL的时候就要预先JOIN address表(如果join比N+1慢的话就不不要这样了,N=每页的数据量),这样带上“address”参数就不会触发N+1查询问题。 一对多另说了,甚至于我认为在List中的单个元素的一对多序列化的需求是不合理的,UI设计必须调整。 就是因为“简陋”、“有很多约定”,所以就不发给大家,发了也没人看得懂啊,呵呵。还是建议其他人根据自己的项目特点自己实现,这样自己有其他需求,改起来也得心应手。我写的东西配合我们自己的框架很好用,给别人就未必合适,比如用iBatis的用户就完全没必考虑序列化的时候产生的延迟加载问题。 我现在搞一堆多对多的东西,写起来省力.但是看后台查询语句的时候,那叫一个惨!!!,看来,也只能多写点代码,把N+1的问题解决 掉...本来打算省点力气... |
|
返回顶楼 | |
发表时间: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)简单吧,只要有思路,实现起来就很简单了。 |
|
返回顶楼 | |
发表时间:2008-10-21
zhaobohao 写道 我现在搞一堆多对多的东西,写起来省力.但是看后台查询语句的时候,那叫一个惨!!!,看来,也只能多写点代码,把N+1的问题解决 掉...本来打算省点力气... 对呀,抓数据出现不能优化的不合理,就是UI需求出问题了。 |
|
返回顶楼 | |
发表时间:2008-10-24
想用FlexJSON 代替json-lib 的但发现FlexJSON不带 json to javabean功能。
|
|
返回顶楼 | |