package api.common.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory; import java.lang.reflect.Type; import java.util.HashMap; import java.util.List; import java.util.Map; public class JsonUtil { /** * bean 转成 json * * @param bean bean 对象 * @param 声明为泛型方法 * @return json 字符串 * @throws JsonProcessingException 异常 */ public static String beanToJson(T bean) throws JsonProcessingException { return new ObjectMapper().writeValueAsString(bean); } /** * json 转成 bean * * @param json json 字符串 * @param tClass 返回值类型 * @param 声明为泛型方法 * @return bean 对象 * @throws JsonProcessingException 异常 */ public static T jsonToBean(String json, Class tClass) throws JsonProcessingException { return new ObjectMapper().readValue(json, tClass); } /** * bean 转成 json * * @param list 列表对象 * @param 声明为泛型方法 * @return json 字符串 * @throws JsonProcessingException 异常 */ public static String listToJson(T list) throws JsonProcessingException { return new ObjectMapper().writeValueAsString(list); } public static List jsonToList(String json, Class tClass) throws JsonProcessingException { TypeFactory t = TypeFactory.defaultInstance(); //List list = new ObjectMapper().readValue(json,t.constructReferenceType(ArrayList.class,tClass)); List list = new ObjectMapper().readValue(json, new TypeReference>() { @Override public Type getType() { return super.getType(); } }); return list; } public static Map jsonToMap(String json) { try { return new ObjectMapper().readValue(json, HashMap.class); } catch (Exception e) { e.printStackTrace(); } return new HashMap(); } }