1.序列化與反序列化封裝
private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
/**
* Object對象轉換為String
*
* @param data Object對象
* @return Object對象對應的字元串
*/
public static <T> String toJsonString(T data) {
try {
ObjectMapper om = new ObjectMapper();
return om.writeValueAsString(data);
} catch (JsonProcessingException ex) {
if (logger.isErrorEnabled()) {
logger.error("json parse error:", ex);
}
return "json parse error:" + ex.getMessage();
}
}
/**
* 字元串轉換為對象
*
* @param json 字元串
* @param clazz 類類型
* @return clazz類型的對象
*/
public static <R> R json2Object(String json, Class<R> clazz) {
try {
ObjectMapper om = new ObjectMapper();
return om.readValue(json, clazz);
} catch (Exception ex) {
if (logger.isErrorEnabled()) {
logger.error("json parse error:", ex);
}
}
return null;
}
/**
* 位元組轉換為對象
*
* @param jsonBuffer 位元組
* @param clazz 類類型
* @return clazz類型的對象
*/
public static <R> R json2Object(byte[] jsonBuffer, Class<R> clazz) {
try {
ObjectMapper om = new ObjectMapper();
return om.readValue(jsonBuffer, clazz);
} catch (Exception ex) {
if (logger.isErrorEnabled()) {
logger.error("json parse error:", ex);
}
}
return null;
}
/**
* 字元串轉換為對象數組
*
* @param json 字元串
* @param clazz 類類型
* @return clazz類型的對象數組
*/
public static <T> List<T> json2List(String json, Class<T> clazz) {
List<T> list = null;
try {
ObjectMapper mapper = new ObjectMapper();
TypeReference<List<T>> typeRef = new TypeReference<List<T>>() {
@Override
public Type getType() {
return new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return new Type[]{clazz};
}
@Override
public Type getRawType() {
return List.class;
}
@Override
public Type getOwnerType() {
return null;
}
};
}
};
list = mapper.readValue(json, typeRef);
} catch (Exception ex) {
if (logger.isErrorEnabled()) {
logger.error("json parse error:", ex);
}
}
return list;
}
2.自定義jackson
https://blog.csdn.net/weixin_35772453/article/details/69666225
如果我的文章對你有幫助,就點一下推薦吧.(*^__^*)