map bean json 直接互换

本文介绍了一种Java中对象与JSON格式数据互相转换的方法,包括将Java对象转换为JSON字符串、从JSON字符串中解析出Java对象、以及将Map类型的数据与Java对象相互转换等实用功能。

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.json.JSONObject;

public class DataConverter {
	/**
	 * map 转变成bean
	 * @param t
	 * @param map
	 * @return
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T> T map2Bean(T t,Map map) {  
		T entity=null;
		try {
			Class clazz = t.getClass();  
			entity = (T)clazz.newInstance();  
			Set<String> keys = map.keySet();  
			for(String key:keys){  
				String fieldName = key;  
				if(key.equals(key.toUpperCase())){  
					Field[] fields = clazz.getDeclaredFields();  
					for(Field field: fields){  
						if(field.getName().toUpperCase().equals(key)) fieldName=field.getName();  
						break;  
					}  
				}  
				try {  
					Class<?> paramClass = clazz.getDeclaredField(fieldName).getType();  
					String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);  
					Method method = clazz.getMethod(methodName, paramClass);  
					method.invoke(entity, map.get(key));  
				} catch (Exception e) {  
				}  
			}
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		}  
		return entity;  
	}
	/**
	 * json转map
	 * @param jsonStr
	 * @return
	 */
	public static Map<String,Object> jsonToMap(String jsonStr){
		if(StringUtils.isBlank(jsonStr)){
			return null;
		}
		ObjectMapper mapper = null;
		try {
			mapper = new ObjectMapper();
			return mapper.readValue(jsonStr,new TypeReference<Map<String,Object>>(){});
		} catch (JsonParseException e) {
		} catch (JsonMappingException e) {
		} catch (IOException e) {
		}finally{
			mapper = null;
		}
		return null;
	}

	/**
	 * map转变为json
	 * @param obj
	 * @return
	 */
	public static <T> String mapToJson(T obj){
		String json = null;
		if (null == obj) {
			return json;
		}
		ObjectMapper mapper = null;
		try {
			mapper = new ObjectMapper();
			json = mapper.writeValueAsString(obj);
		} catch (Exception e) {
		} finally {
			mapper = null;
		}
		return json;
	}


	/**
	 * 将json转化为实体POJO
	 * @param jsonStr
	 * @param obj
	 * @return
	 */
	public static<T> Object json2Obj(Class<T> clazz,String jsonStr) {
		T t = null;
		try {
			ObjectMapper objectMapper = new ObjectMapper();
			t = (T) objectMapper.readValue(jsonStr,clazz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return t;
	}



	/**
	 * 将实体POJO转化为JSON
	 * @param obj
	 * @return
	 */
	public static<T> JSONObject object2Json(T obj) {
		ObjectMapper mapper = new ObjectMapper();  
		String jsonStr = "";
		try {
			jsonStr =  mapper.writeValueAsString(obj);
		} catch (IOException e) {

		}
		return new JSONObject(jsonStr);
	}

	
	public static void main(String[] args) {
		Student student=new Student();
		student.setAge(20);
		student.setName("徐xx");
		student.setId("1");

		Student studentin=new Student();
		studentin.setAge(40);
		studentin.setName("xxx");
		studentin.setId("12");
		student.setStudent(studentin);
		System.out.println(object2Json(student));

		String str="{\"student\":{\"student\":null,\"name\":\"xxx\",\"id\":\"12\",\"age\":40},\"name\":\"徐xx\",\"id\":\"1\",\"age\":20}";
		Student student2=(Student) json2Obj(Student.class,str);
		System.out.println(student2.getAge());
	}
}

转载于:https://my.oschina.net/v512345/blog/883816

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值