1、序列化:将对象转成二进制字节或者json等。
2、反序列化:将二进制或者json转成java对象。
-- spring默认使用jackson,可以这样反序列化复杂的集合对象
Map<String, RuleCacheDTO> ruleMap = JsonUtil.readJson(parseObject.getString("content"), Map.class, String.class, RuleCacheDTO.class);
/**
* 获取泛型的Collection Type
* @param jsonStr json字符串
* @param collectionClass 泛型的Collection
* @param elementClasses 元素类型
*/
public static <T> T readJson(String jsonStr, Class<?> collectionClass, Class<?>... elementClasses) {
ObjectMapper mapper = new ObjectMapper();
JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
try{
return mapper.readValue(jsonStr, javaType);
}catch (JsonParseException e){
}
return null;
}
-- fastjson阿里开源框架
BigDecimal 类型反序列化时要注意,
new BigDecimal(19999999.00001d);这种会出问题
new BigDecimal("19999999.00001");这个正常