替换带代码里所有 fastjson 的内容,统一使用 jackson

不考虑使用 gson 的原因,是基本停止了维护
This commit is contained in:
YunaiV
2021-01-24 12:15:59 +08:00
parent 9c1c265993
commit eadc4f749a
17 changed files with 106 additions and 131 deletions

View File

@@ -0,0 +1,45 @@
package cn.iocoder.dashboard.framework.mybatis.core.type;
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.user.SysUserDO;
import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Set;
/**
* 参考 {@link com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler} 实现
* 在我们将字符串反序列化为 Set 并且泛型为 Long 时,如果每个元素的数值太小,会被处理成 Integer 类型,导致可能存在隐性的 BUG。
*
* 例如说哦,{@link SysUserDO#getPostIds()} 属性
*
* @author 芋道源码
*/
public class JacksonLongSetTypeHandler extends AbstractJsonTypeHandler<Object> {
// TODO 芋艿,需要将 Spring 的设置下进来
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final TypeReference<Set<Long>> typeReference = new TypeReference<Set<Long>>(){};
@Override
protected Object parse(String json) {
try {
return objectMapper.readValue(json, typeReference);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
protected String toJson(Object obj) {
try {
return objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
}