使用jackson序列化和反序列化json
jackson的repository
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
封装成JsonBuilder
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonBuilder {
private ObjectMapper mapper = new ObjectMapper();
private static JsonBuilder _instance = new JsonBuilder();
public static JsonBuilder getInstance() {
return _instance;
}
public JsonBuilder() {
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
}
public <T> T fromJson(String json, Class<T> typeOfT) {
if (json == null) {
throw new IllegalArgumentException("json string should not be null");
}
try {
return mapper.readValue(json, typeOfT);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public String toJson(Object obj) {
try {
return mapper.writeValueAsString(obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
使用方法
如果不想序列化某个字段在上面加上@JsonIgnore注解接就行了
fromJson的参数:json的String,要转换成的类
toJson的参数:要转换成json的对象