fastjson2
fastjson2 copied to clipboard
使用post方法时,使用requestBody接收数据时,如何将接收的实体中字段值为空字符串的字段转为null
请描述您的问题
询问有关本项目的使用和其他方面的相关问题。 使用post方法时且使用requestBody接收数据时,如何将接收的实体中字段值为空字符串的字段值转为null
自己注册一个String的Reader,在这个 reader里处理
自己注册一个String的Reader,在这个 reader里处理 测试未生效: ValueFilter valueFilter = (object, name, value) -> { log.error(name); if (ObjectUtil.isEmpty(value)) { value = null; } return value; }; // 自定义格式化输入 fastJsonConfig.setReaderFeatures(JSONReader.Feature.DuplicateKeyValueAsArray, JSONReader.Feature.TrimString); fastJsonConfig.setReaderFilters(valueFilter);
你这个是 filter不是ObjectReader,读不支持 ValueFilter,你可以看下源码 读仅支持 AutotypeFilter 和 ExtraProcessor
我试了 没生效
目前有个没有办法的解决办法 重写com.alibaba.fastjson2.support.spring6.http.converter.FastJsonHttpMessageConverter#read方法,手动使用正则表达式去除空串然后 再交由 fastjson2 处理
可以参考正则,但是我觉得很不严谨,也没研究出其它办法
String EMPTY_STR_PATTERN = ",?\"\\w+\":\"\",?"
不知道ObjectReaderModule能否实现
舍弃了上面的实现方式。非常不严谨,可以让前端处理