使用jackson[ObjectMapper]进行相关转化
private static final ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, Visibility.ANY);
//json串转对象
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
return mapper.readValue(jsonData, beanType);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//对象转字符串
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
ObjectMapper相关属性的一些说明
DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES【此参数默认是true,即检查映射关系,当设置为false以后,objectMapper将忽略需解析的json串中“不认识”的字段】
DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY【反序列化List】
ObjectMapper使用的一些坑:在序列化或反序列化过程中,参数首字母会进行小写处理。
解决方法:
1、对象的成员变量使用注解@JsonProperty(value = "Test");
2、使用fastjson
- 反序列化:com.alibaba.fastjson.JSON.parseObject(String str, Object obj);//obj为class
- 序列化:com.alibaba.fastjson.JSON.toJSONString(Object obj,new PascalNameFilter());//借助“SerializeFilter”