package com.xxl.job.core.util; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * Jackson util * * 1、obj need private and set/get; * 2、do not support inner class; * * @author xuxueli 2015-9-25 18:02:56 */ public class JacksonUtil { private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class); private final static ObjectMapper objectMapper = new ObjectMapper(); public static ObjectMapper getInstance() { return objectMapper; } /** * bean、array、List、Map --> json * * @param obj * @return json string * @throws Exception */ public static String writeValueAsString(Object obj) { try { return getInstance().writeValueAsString(obj); } catch (JsonGenerationException e) { logger.error(e.getMessage(), e); } catch (JsonMappingException e) { logger.error(e.getMessage(), e); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; } /** * string --> bean、Map、List(array) * * @param jsonStr * @param clazz * @return obj * @throws Exception */ public static T readValue(String jsonStr, Class clazz) { try { return getInstance().readValue(jsonStr, clazz); } catch (JsonParseException e) { logger.error(e.getMessage(), e); } catch (JsonMappingException e) { logger.error(e.getMessage(), e); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; } /** * string --> List... * * @param jsonStr * @param parametrized * @param parameterClasses * @param * @return */ public static T readValue(String jsonStr, Class parametrized, Class... parameterClasses) { try { JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses); return getInstance().readValue(jsonStr, javaType); } catch (JsonParseException e) { logger.error(e.getMessage(), e); } catch (JsonMappingException e) { logger.error(e.getMessage(), e); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; } /*public static T readValueRefer(String jsonStr, Class clazz) { try { return getInstance().readValue(jsonStr, new TypeReference() { }); } catch (JsonParseException e) { logger.error(e.getMessage(), e); } catch (JsonMappingException e) { logger.error(e.getMessage(), e); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; }*/ public static void main(String[] args) { try { Map map = new HashMap(); map.put("aaa", "111"); map.put("bbb", "222"); String json = writeValueAsString(map); System.out.println(json); System.out.println(readValue(json, Map.class)); } catch (Exception e) { logger.error(e.getMessage(), e); } } }