Jackson之String與物件互轉
阿新 • • 發佈:2018-11-04
public class JacksonTest { //配置ObjectMapper物件 private static final ObjectMapper objectMapper = new ObjectMapper() .configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); /** * 使用泛型方法,把json字串轉換為相應的JavaBean物件。 * 轉換為普通JavaBean:readValue(json,Student.class) * 轉換為List:readValue(json,List.class).readValue(json,List.class)返回其實是List<Map>型別,第二個引數不能是List<Student>.class,所以不能直接轉換。 * 轉換為特定型別的List,比如List<Student>,把readValue()的第二個引數傳遞為Student[].class.然後使用Arrays.asList();方法把得到的陣列轉換為特定型別的List。 * 轉換為Map:readValue(json,Map.class) * 我們使用泛型,得到的也是泛型 * * @param content 要轉換的JavaBean型別 * @param valueType 原始json字串資料 * @return JavaBean物件 */ public static <T> T readValue(String content, Class<T> valueType) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { //字串轉Json物件 return objectMapper.readValue(content, valueType); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 把JavaBean轉換為json字串 * 普通物件轉換:toJson(Student) * List轉換: toJson(List) * Map轉換: toJson(Map) * 我們發現不管什麼型別,都可以直接傳入這個方法 * * @param object JavaBean物件 * @return json字串 */ public static String toJSon(Object object) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { //Json物件轉為String字串 return objectMapper.writeValueAsString(object); } catch (Exception e) { e.printStackTrace(); } return null; } }
注意:①@JsonIgnoreProperties(ignoreUnknown=true)作用:忽略沒有傳入的屬性,否則每一個setter方法都必須在字串中找到對照,找不到就會報錯。