package api.common.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.TextNode; import com.fasterxml.jackson.databind.type.TypeFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class JsonUtil { private static final ObjectMapper mapper = new ObjectMapper(); /** * 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 { JavaType javaType = TypeFactory.defaultInstance().constructParametricType(List.class, tClass); if(ObjectUtil.isNull(json)){ return new ArrayList<>(); } List list = new ObjectMapper().readValue(json,javaType); return list; } public static Map jsonToMap(String json) { try { return new ObjectMapper().readValue(json, HashMap.class); } catch (Exception e) { e.printStackTrace(); } return new HashMap(); } public static JsonNode readTree(String json) { try { JsonNode jsonNode = mapper.readTree(json); } catch (JsonProcessingException e) { e.printStackTrace(); } return new TextNode(""); } }