论坛首页 Java企业应用论坛

简单实用的Object2JSON小工具:JSONUtil

浏览 9951 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-25  
asklxf 写道
jomper 写道
asklxf 写道
很久以前写的java2json的转换:
http://www.ibm.com/developerworks/cn/web/wa-lo-json/

谢谢你的推荐, 犹豫无法下载只能从表面猜测您的做法。
希望能提供源代码,学习您的思想。

从接口上看,我自认为没有我处理的好。指定对象解析,是我提出的要点。


小工具不需要接口,不用搞那么复杂

代码下不了可能是code.google.com还在被挟持中


可能有点误会,我说的接口是,使用接口(你的 toJson(object)),而不是java的interface.你至少是没有看过的代码,甚至连我的说明都懒得看就贴了您的URL。呵呵。
0 请登录后投票
   发表时间:2009-06-26  
jomper 写道
asklxf 写道
jomper 写道
asklxf 写道
很久以前写的java2json的转换:
http://www.ibm.com/developerworks/cn/web/wa-lo-json/

谢谢你的推荐, 犹豫无法下载只能从表面猜测您的做法。
希望能提供源代码,学习您的思想。

从接口上看,我自认为没有我处理的好。指定对象解析,是我提出的要点。


小工具不需要接口,不用搞那么复杂

代码下不了可能是code.google.com还在被挟持中


可能有点误会,我说的接口是,使用接口(你的 toJson(object)),而不是java的interface.你至少是没有看过的代码,甚至连我的说明都懒得看就贴了您的URL。呵呵。


看过你的代码,觉得比较复杂,因为json的数据对象是固定的几种,映射到java也很简单,没有必要指定class[],通过反射+递归就可以解析出json对象,返回string比传入stringbuffer好,接口越简单越好:

String toJson(Object o)
0 请登录后投票
   发表时间:2009-06-26   最后修改:2009-06-26
asklxf 写道
jomper 写道
asklxf 写道
jomper 写道
asklxf 写道
很久以前写的java2json的转换:
http://www.ibm.com/developerworks/cn/web/wa-lo-json/

谢谢你的推荐, 犹豫无法下载只能从表面猜测您的做法。
希望能提供源代码,学习您的思想。

从接口上看,我自认为没有我处理的好。指定对象解析,是我提出的要点。


小工具不需要接口,不用搞那么复杂

代码下不了可能是code.google.com还在被挟持中


可能有点误会,我说的接口是,使用接口(你的 toJson(object)),而不是java的interface.你至少是没有看过的代码,甚至连我的说明都懒得看就贴了您的URL。呵呵。


看过你的代码,觉得比较复杂,因为json的数据对象是固定的几种,映射到java也很简单,没有必要指定class[],通过反射+递归就可以解析出json对象,返回string比传入stringbuffer好,接口越简单越好:

String toJson(Object o)


1.对于有没有必要指定需要解析的class[]
1.1 因为是反射+递归解析,碰到一个大点的对象就会解析到很深。但是需要的json数据不见得的需要全部的内容。指定class[]以后可以更灵活的处理你需要的数据内容,提高性能。还能避免object.getClass这样没有用的数据.
1.2 碰到嵌套异常怎么办?告诉别人这个工具不行了,用别的吧?所以指定需要解析的class[]能有效的避免嵌套异常。至少可以不去解析那个可能引起嵌套异常的类。
1.3 本身class[]是动态参数,可以忽略。

2.对于是否要用stringbuffer
2.1 我一直很提倡pass by value的做法
2.2 很多情况下并不是给出一个object2json的数据就能满足,例如EXT需要一个totalProperty和root参数。用stringbuffer更容易去包装这个json数据.而不是扔给别人一个string去"+"了事的。

3.这个工具是否复杂
3.1 这个方法一共3个参数,其中一个还是动态参数。完全在sun对于方法参数个数建议的范围内.
3.2 这个工具用很小的代价,带来了更灵活的处理方式,这个代价我是可以接受的。
3.3 在除jdk5外不依赖任何包的前提下一共不到100行的代码完成了以上功能,我觉得还是对得起观众的。呵呵。

google code可以连接后,我有幸拜读了你的源码.
1.对于在toJson(o)里RuntimeException Unsupported type且不做处理的方式有疑问,反射是机械的,所以考虑不到全部情况很正常。这里忽略比立即停止抛出异常要好。不然显得程序的容错性很差。
2.还是在toJson(o)里instanceof Map后武断的转化成MAP<String,Object>是有问题的。类里面有个其他泛型约束的Map出现是完全合理的(例如Map<Object,Object>),在你这里就会出错。
3.解析对象为null,往数据里填充个"null",实在无法理解,貌似"{null}"也不是个合法格式吧?诸如此类的还有很多,就不一一说明了。
4.对于基本类型大量的instanceof判断颇有微词,你可以参考下我是怎么做的,这个做法也是借鉴javaeye的一个高手的,呵呵。

总之我抱着学习探讨的心态还是很高兴的,感谢你关注我的帖子,感谢您的建议,共勉。
0 请登录后投票
论坛首页 Java企业应用版

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