简单实用的Object2JSON小工具:JSONUtil

本工具用来把Java对象转换成JSON格式输出.小巧实用,接口友好欢迎大家拍砖,指导.

[b]1 基本功能:[/b]
1.1 [color=blue]支持基本类型及其包装类和Date的解析.[/color]
1.2 [color=blue]支持指定关联关系类的解析[/color]
1.3 [color=blue]支持数组,List的解析[/color]
1.4 [color=blue]支持忽略一层嵌套类(见说明 3.2)[/color]

[b]2 基本调用方法:[/b]
JSONUtil.object2JSON(object,stringBuffer,new Class[]{...});


[b]3 说明:[/b]
3.1 思路就是解析指定你想要解析的类(new Class[]{...}),然后通过StringBuffer输出.[color=red]你指定什么就解析什么,不指定就不解析.这样做的目的就是既能自动解析对象又能减少无意义的数据解析也能从另一个层面避免嵌套. [/color]如果不需要指定可以写成这样:
JSONUtil.object2JSON(object,stringBuffer)

3.2 root object 的类型不用指定,只需要指定内部属性就行。
3.3 嵌套不好防范,已经是你自己手动指定,所以请注意不要出现嵌套.本身出现嵌套的模型可能也有问题吧?就算是tree nodes也通常用是外键关联parent id来处理的。所以我基本是放弃了嵌套的处理,由你自己指定要处理的类,自己注意。
3.4 POJO里最好不要有setter,getter之外的方法,如果需要你完全可以写到工具类。已经处理过出现单独属性的情况.
3.5 可以定义DateFormat的格式,见下面的范例4.3
3.6 源码和UT附件下载.

[b]4 范例:[/b]4.1基本解析:
	WordType wt = new WordType();
wt.setName("f");
wt.setId(3);

Word w = new Word();
w.setName("a");
w.setType(wt);
JSONUtil.object2JSON(w,stringBuffer,new Class[]{WordType.class});


输出:
Word:{"name":"a","type":{"id":3,"name":"f"}}


4.2 数组和List解析
	Tag t = new Tag();
t.setName("t");
Tag tt = new Tag();
tt.setName("tt");
Tag[] ttt = {t,tt};

WordType wt = new WordType();
wt.setName("f");
wt.setId(3);

Word w = new Word();
w.setName("a");
w.setType(wt);
w.setTags(ttt);

WordType wtt = new WordType();
wtt.setName("gg");
wtt.setId(2);

Word ww = new Word();
ww.setName("aa");
ww.setType(wtt);
ww.setTags(new Tag[]{t});
List<Tag> tagList = new ArrayList<Tag>();
tagList.add(t);
tagList.add(tt);
ww.setTagList(tagList);
JSONUtil.object2JSON(new Word[]{w,ww},stringBuffer,new Class[]{WordType.class,Tag.class});


输出:
[Word:{"name":"a","tags":[{"name":"t"},{"name":"tt"}],"type":{"id":3,"name":"f"}},Word:{"name":"aa","tagList":[{"name":"t"},{"name":"tt"}],"tags":[{"name":"t"}],"type":{"id":2,"name":"gg"}}]


4.3 基本类型,包装类,日期解析
	LangObject lo = new LangObject();
lo.setBooleanValue(true);
lo.setByteValue(Byte.valueOf("2"));
lo.setCharacterValue(Character.valueOf('3'));
lo.setDoubleValue(4.0);
lo.setFloatValue(5f);
lo.setIntegerValue(6);
lo.setLongValue(7l);
lo.setShortValue(Short.valueOf("8"));

lo.setBooleanObject(true);
lo.setByteObject(Byte.valueOf("2"));
lo.setCharacterObject(Character.valueOf('3'));
lo.setDoubleObject(4.0);
lo.setFloatObject(5f);
lo.setIntegerObject(6);
lo.setLongObject(7l);
lo.setShortObject(Short.valueOf("8"));

lo.setUtilDate(new java.util.Date());
lo.setSqlDate(java.sql.Date.valueOf("2009-6-6"));

JSONUtil.DATE_FORMAT = "yyyy/MM/dd";
JSONUtil.object2JSON(lo,stringBuffer);


输出:
LangObject:{"booleanObject":"true","booleanValue":"true","byteObject":2,"byteValue":2,"characterObject":"3","characterValue":"3","doubleObject":4.0,"doubleValue":4.0,"floatObject":5.0,"floatValue":5.0,"integerObject":6,"integerValue":6,"longObject":7,"longValue":7,"shortObject":8,"shortValue":8,"sqlDate":"2009/06/06","utilDate":"2009/06/12"}


2009-6-25
上传:
用Collection接口替代List
去掉对象名
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值