1 package com.myhexin.core.mapping; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 import org.codehaus.jackson.JsonGenerationException; 7 import org.codehaus.jackson.JsonParseException; 8 import org.codehaus.jackson.map.JsonMappingException; 9 import org.codehaus.jackson.map.ObjectMapper; 10 import org.codehaus.jackson.type.TypeReference; 11 import org.slf4j.Logger; 12 import org.slf4j.LoggerFactory; 13 14 /** 15 * 一些json与对象转换的工具集合类 16 * 17 * 18 */ 19 public class JsonUtils { 20 21 private static Logger logger = LoggerFactory.getLogger(JsonUtils.class); 22 23 private static final ObjectMapper objectMapper = new ObjectMapper(); 24 25 private JsonUtils(){} 26 public static ObjectMapper getInstance() { 27 return objectMapper; 28 } 29 30 /** 31 * 使用Jackson 数据绑定 将对象转换为 json字符串 32 * 33 * 还可以 直接使用 JsonUtils.getInstance().writeValueAsString(Object obj)方式 34 * @param obj 35 * @return 36 */ 37 public static String toJsonString(Object obj) { 38 try { 39 return objectMapper.writeValueAsString(obj); 40 } catch (JsonGenerationException e) { 41 logger.error("转换为json字符串失败" + e.toString()); 42 } catch (JsonMappingException e) { 43 logger.error("转换为json字符串失败" + e.toString()); 44 } catch (IOException e) { 45 logger.error("转换为json字符串失败" + e.toString()); 46 } 47 return null; 48 } 49 50 /** 51 * json字符串转化为 JavaBean 52 * 53 * 还可以直接JsonUtils.getInstance().readValue(String content,Class valueType)用这种方式 54 * @param <T> 55 * @param content 56 * @param valueType 57 * @return 58 */ 59 public static <T> T toJavaBean(String content, Class<T> valueType) { 60 try { 61 return objectMapper.readValue(content, valueType); 62 } catch (JsonParseException e) { 63 logger.error("json字符串转化为 javabean失败" + e.toString()); 64 } catch (JsonMappingException e) { 65 logger.error("json字符串转化为 javabean失败" + e.toString()); 66 } catch (IOException e) { 67 logger.error("json字符串转化为 javabean失败" + e.toString()); 68 } 69 return null; 70 } 71 72 /** 73 * json字符串转化为list 74 * 75 * 还可以 直接使用 JsonUtils.getInstance().readValue(String content, new TypeReference<List<T>>(){})方式 76 * @param <T> 77 * @param content 78 * @param valueType 79 * @return 80 * @throws IOException 81 */ 82 public static <T> List<T> toJavaBeanList(String content, TypeReference<List<T>> typeReference) throws IOException { 83 try { 84 return objectMapper.readValue(content, typeReference); 85 } catch (JsonParseException e) { 86 logger.error("json字符串转化为 list失败,原因:" + e.toString()); 87 throw new RuntimeException("json字符串转化为 list失败"); 88 } catch (JsonMappingException e) { 89 logger.error("json字符串转化为 list失败,原因" + e.toString()); 90 throw new JsonMappingException("json字符串转化为 list失败"); 91 } catch (IOException e) { 92 logger.error("json字符串转化为 list失败,原因" + e.toString()); 93 throw new IOException("json字符串转化为 list失败"); 94 } 95 } 96 97 }