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