论坛首页 Java企业应用论坛

json-conversion-1.2 Beta版发布(实体类转换成JSON对象工具)

浏览 9756 次
精华帖 (1) :: 良好帖 (9) :: 新手帖 (19) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-10   最后修改:2009-10-15
实体类转换成JSON对象工具

http://pan-java.iteye.com/admin/blogs/482625发布以后,发现网友对这个工具很关注,同时激起了我完善这个工具的动力,经过几个小时的努力,还有以前工作的一些实用程序一起组成这个工具包.

具体如下:

注解
@JSONValue  -- 标示实体类的参数,

@JSONCollection-- 标示实体类的集合类参数,

@JSONEntity -- 标示实体类,

例子如下:
public class User implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7496167483113776481L;

	public User(String name, int age) {
		this.name = name;
		this.age = age;
	}

	@JSONValue
	private String name;

	@JSONValue
	private int age;

	@JSONCollection
	private List<User> firends = new ArrayList<User>();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public List<User> getFirends() {
		return firends;
	}

	public void setFirends(List<User> firends) {
		this.firends = firends;
	}

}



@JSONEntity
public class Food implements Serializable{

	public Food(String name,int price){
		this.name = name;
		this.price = price;
	}
	
	private String name;

	private int price;
	
	private Set<Food> set = new HashSet<Food>();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public Set<Food> getSet() {
		return set;
	}

	public void setSet(Set<Food> set) {
		this.set = set;
	}

}



应用

JSONObject obj = new JSONObject();

EntityConversionJSON.entityToJSON(usera, obj);

JSONArray obj = new JSONArray();

		EntityConversionJSON.collectionToJSONArray(usera.getFirends(), obj);



同时还包含了两个工具

JSONResult --- 返回JSON结果
AjaxResponsePrintUtil -- ajax 返回写Response 工具

如果成功

  JSONObject object = JSONResult.getSuccess(null);
  AjaxResponsePrintUtil.writer(response, object);



如果失败
  JSONObject object = JSONResult.getFail("system error!");
  AjaxResponsePrintUtil.writer(response, object);


页面

if(data.result==1){//成功
    // some
}else{//失败
   alert(data.message);
}


简单的工具希望能给大家带来方便!
源代码: svn https://asksite.googlecode.com/svn/trunk/JSONExchange


-----------------2009-10-14 更新-------------------------------------------

已更新为1.1
1.@JSONCollection 支持数组类型数据转换成 JSONArray
2.@JSONEntity  支持数组类型数据转换成 JSONArray

-----------------2009-10-15 更新-------------------------------------------

已更新为1.2
1.@JSONMap支持 Map类型的数据
格式:{"map":[{"food1":{"users":[],"price":20,"name":"food1"}},{"food2":{"users":[],"price":30,"name":"food2"}}]}

map是MAP数据字段名 内包含JSONArray  food1是MAP 的key

2.array,collection,map转换成JSONObject,包括了字段名,应用中更合理.

   发表时间:2009-10-12  
用了一下非常不错,望LZ继续完善!
0 请登录后投票
   发表时间:2009-10-12  
XStream也可以完成这种Java对象到JSON对象的转换咯,还可以嵌套,不错。推荐大家试下
0 请登录后投票
   发表时间:2009-10-13  
LZ的这种思想还是不错的呢 期待多更新几个版本 多添加点东西
0 请登录后投票
   发表时间:2009-10-13  
whaosoft 写道
LZ的这种思想还是不错的呢 期待多更新几个版本 多添加点东西

谢谢,还希望你们多发现问题,多提建议,这个工具还有很多不足,还要不断的完善!
0 请登录后投票
   发表时间:2009-10-13  
赞一个,请问相对Xstream ,JSONLib .GSON等,有啥特点,是否支持对Hibernate Proxy Bean的转换 
0 请登录后投票
   发表时间:2009-10-13  
linliangyi2007 写道
赞一个,请问相对Xstream ,JSONLib .GSON等,有啥特点,是否支持对Hibernate Proxy Bean的转换 

我没有用过Xstream ,JSONLib .GSON,
现在我的这个工具,支持注解,可以确认那些字段转换,那些不转换
还不支持Map类型的转换,在实际开发不知将Map转成JSONObject 还是 JSONArray好.
还不支持 JSON --> JAVABEAN 转换

还在不断完善,能力有限还请各位提保贵意见,为中国开源做一份小小的供献.
0 请登录后投票
   发表时间:2009-10-13  
pan_java 写道
linliangyi2007 写道
赞一个,请问相对Xstream ,JSONLib .GSON等,有啥特点,是否支持对Hibernate Proxy Bean的转换 

我没有用过Xstream ,JSONLib .GSON,
现在我的这个工具,支持注解,可以确认那些字段转换,那些不转换
还不支持Map类型的转换,在实际开发不知将Map转成JSONObject 还是 JSONArray好.
还不支持 JSON --> JAVABEAN 转换

还在不断完善,能力有限还请各位提保贵意见,为中国开源做一份小小的供献.


加油加油
0 请登录后投票
   发表时间:2009-10-13  
楼主做的很好,希望楼主能够完善,减轻我们的工作量,加油!
0 请登录后投票
   发表时间:2009-10-14  
nutz里也包含一个json的工具包使用也很方便,不过还是支持LZ,支持中国的开源事业!
0 请登录后投票
论坛首页 Java企业应用版

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