使用jackson實現字串跟json之間轉換
阿新 • • 發佈:2018-11-07
1.pom.xml配置
<jackson-version>2.3.3</jackson-version> <!-- json analyz --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson-version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson-version}</version> </dependency>
2.輔助類
package com.cmsz.rc.util; import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonUtil { static ObjectMapper objectMapper; /** * 使用泛型方法,把json字串轉換為相應的JavaBean物件。 轉換為普通JavaBean:readValue(json,Student.class) * 轉換為List:readValue(json,List.class ).但是如果我們想把json轉換為特定型別的List,比如List * <Student>,就不能直接進行轉換了。 因為readValue(json,List .class)返回其實是List * <Map>型別,你不能指定readValue()的第二個引數是List<Student >.class,所以不能直接轉換。 * 我們可以把readValue()的第二個引數傳遞為Student[].class.然後使用Arrays.asList ();方法把得到的陣列轉換為特定型別的List。 * 轉換為Map:readValue(json,Map.class) 我們使用泛型,得到的也是泛型 * * @param content 要轉換的JavaBean型別 * @param valueType 原始json字串資料 * @return JavaBean物件 * @throws IOException * @throws JsonMappingException * @throws JsonParseException */ public static <T> T readValue(String content, Class<T> valueType) throws JsonParseException, JsonMappingException, IOException { if (objectMapper == null) { objectMapper = new ObjectMapper(); } return objectMapper.readValue(content, valueType); } public static <T> T readValue(String content, JavaType javaType) throws JsonParseException, JsonMappingException, IOException { if (objectMapper == null) { objectMapper = new ObjectMapper(); } return objectMapper.readValue(content, javaType); } /** * 把JavaBean轉換為json字串 普通物件轉換:toJson(Student) List轉換:toJson(List) Map轉換:toJson(Map) * 我們發現不管什麼型別,都可以直接傳入這個方法 * * @param object JavaBean物件 * @return json字串 * @throws JsonProcessingException */ public static String toJson(Object object) throws JsonProcessingException { if (objectMapper == null) { objectMapper = new ObjectMapper(); } return objectMapper.writeValueAsString(object); } public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses); } /** * 私有的建構函式 */ private JacksonUtil() { } }