关于flexjson将json转为javabean的使用

原创 2015年11月20日 23:21:15

   该文章仅做自己日后参考,复习用。

   需要引的包:flexjson-2.1.jar

 划水一个月开始做了点公司的项目,实现一个接口,实现将json数据转为javabean。公司用的是flexjson,于是去网上查了资料,关于flexjson将json转为javabean的太少(可能我要的方式少了)只找到一篇案例,做了发现那个案例中有一些错误,调了半天,后来在项目经理的指导下写过。

   上案例:


	public static UserData toBean(String JsonStr){
		UserData data=null;
		try {
			data = new JSONDeserializer<UserData>().deserialize(JsonStr

		} catch (Exception e) {
			e.printStackTrace();
		}
			
		return data;
	}
	

这个是将一个json数据转为一个UserData的对象json是{"id":42,"cityCode":“557”}这种格式。

二:

	public static List<UserData> toListBean(String str){
		List<UserData> list = null;
		try {
			list = new JSONDeserializer<List<UserData>>().use("userinfo",ArrayList.class).use("values", UserData.class).deserialize(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

这个是将json数据转为List<UserData>的形式,传入的是json数组[{“id”:42,"city":"557"},{“id”:42,"city":"557"}]

三:

public class JSONInfo<T> {
		private int errCode;
		private String errMsg;
		private List<T> userinfo; 
		private Long updateTime;
		
		public int getErrCode() {
			return errCode;
		}
		public void setErrCode(int errCode) {
			this.errCode = errCode;
		}
		public String getErrMsg() {
			return errMsg;
		}
		public void setErrMsg(String errMsg) {
			this.errMsg = errMsg;
		}
		public Long getUpdateTime() {
			return updateTime;
		}
		public void setUpdateTime(Long updateTime) {
			this.updateTime = updateTime;
		}
		public List<T> getUserinfo() {
			return userinfo;
		}
		public void setUserinfo(List<T> userinfo) {
			this.userinfo = userinfo;
		}
}

这个是嵌套json要用到的bean对象,具体看网上找到的那个,但是网上找到的一个他的承载json的字段是T 类型的,之前在写的时候怎么也调不通,后来项目经理来改成了List<T>就可以了(debug时其他字段都是有值唯独中间的获取不到)json格式是:{\"errCode\":0,\"errMsg\":\"成功\",       \"userinfo\":[{\"id\":42,\"cityCode\":\"577\",\"userCode\":\"12312345\",\"userName\":\"1234\",\"userType\":\"1\",\"operateTime\":1447839916000,\"operateType\":1},{\"id\":44,\"cityCode\":\"577\",\"userCode\":\"12312345\",\"userName\":\"1234\",\"userType\":\"1\"}]       ,\"updateTime\":147988147631}(中间用空格隔了一点方便查看格式)


	public static JSONInfo<List<UserData>> toBean2(String JsonStr){
		JSONInfo<List<UserData>> info = null;
		try {
			info = new JSONDeserializer<JSONInfo<List<UserData>>>()
					.use("userinfo", ArrayList.class).use("userinfo.values", UserData.class)
					.deserialize(JsonStr,JSONInfo.class);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return info;
	}

但是这样用到的是反射的形式,有很大的局限性,也就是说,use("userinfo", ArrayList.class)这语句里面你的String是要和JSONInfo里的字段是一致的JSOInfo里面要有get和set方法。这样没写一个bean都要有一个对应的JSONInfo。于是有下面的


四:

//测试List的
	public static void getMM(String json){
		try {
			
			int i =0;
			System.out.println(i);
			List<BerthData> list = null;
//			Object obj = new JSONDeserializer().deserialize(json);
//			Map map = (Map) new JSONDeserializer().deserialize(json);
//			List list = (List) map.get("userinfo");
//			String str = list.get(0).toString();
//			List list = (List) new JSONDeserializer().deserialize(json,ArrayList.class);
//			Object obj = list.get(0);
//			System.out.println(obj);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//测试类
	public static void getDataBean(String jsonStr){
		try {
			BerthData userData = BerthData.gertBerthData(jsonStr);
			System.out.println(userData);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//测试map
	public static void getMap(String jsonStr){
		try {
			Map map = BaseData.getMap(jsonStr);
			System.out.println(map);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
flexjson是可以通过直接 new JSONDeserializer().deserialize(json) 这样来取的,返回的对象你直接定义,得到的是一个HashMap,你可以通过get(key)来获取到数据,获取嵌套模式时,通过get("userinfo")来获取到一个LIst集合,而list集合里面存储的是键值对,也是Map的形式可以获取,然后在吧获取到的值通过bean的set方法添加到具体的类里面,这样十分的灵活,如下面的类里面的方法:

	
	public static List<UserData> getUserDataList(String json){
		List<UserData> userDatas = new ArrayList<UserData>();
		List list = (List) deserializer.deserialize(json,ArrayList.class);
		for(int i=0;i<list.size();i++){
			UserData userData = new UserData();
			Map map = (Map) list.get(i);
			userData.setId((Long.valueOf(map.get("id")+"")) );
			userData.setCityCode((String) map.get("cityCode"));
			userData.setUserCode((String) map.get("userCode"));
			userData.setUserName((String) map.get("userName"));
			userData.setUserType((String) map.get("userType"));
			userData.setOperateType((int) map.get("operateType"));
			userData.setOperateTime((Long.valueOf(map.get("operateTime")+"")) );
			userDatas.add(userData);
			System.out.println(userData);
		}
		return userDatas;
	}
	
	public static UserData gertUserData(String json){
		UserData userData = new UserData();
		Map map = (Map) deserializer.deserialize(json,Map.class);
		userData.setId((Long.valueOf(map.get("id")+"")));
		userData.setCityCode((String) map.get("cityCode"));
		userData.setUserCode((String) map.get("userCode"));
		userData.setUserName((String) map.get("userName"));
		userData.setUserType((String) map.get("userType"));
		userData.setOperateType((int) map.get("operateType"));
		userData.setOperateTime((Long.valueOf(map.get("operateTime")+"")));
		return userData;
	}
	

base类里面:


public class BaseData {
		protected static JSONDeserializer deserializer = new JSONDeserializer();
		
		public static Map getMap(String json){
			Map map = (Map) deserializer.deserialize(json,Map.class);
		    return map;
		}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

json jsonlib fastjson jackjosn使用

什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机...

json-lib(ezmorph)、gson、flexJson、fastjson、jackson对比,实现java转json,json转java

json-lib(ezmorph)、gson、flexJson、fastjson、jackson对比,实现java转json,json转java 本文中所讲的所有代码都在此:json-test ...

json转换为对象,对象转换为json flexjson的灵活运用

在实际应用解析中经常会遇到各种格式的转换,因为大部分转换工具都依赖于开源框架,都知道学习一个框架的使用是需要一定的成本的, 假如在一个比较紧的项目中如果将一部分时间投入都学习工具的使用上,相对的于个...
  • hualom
  • hualom
  • 2012-03-14 18:05
  • 5452

flexjson序列化时间

序列化时间,要用到flexjson-2.1.jar这个版本。 How to configure a transformer There are 3 ways you can confi...

客户端使用Ajax访问struts2 , struts2如何返回一个json数据!json-lib与flexjson

错误提示: 21:21:25,316 ERROR runtime:96 - Template processing error: "Method public java.lang.String or...

利用ObjectMapper将javabean转为json

在java服务端实体对象和json之间进行相互转换的时候,常用到的框架有json-lib,Jackson,fastjson,gson等等。以前用gson比较多,而且gson在很多情况下的确表现不俗,不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)