fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

使用post方法时,使用requestBody接收数据时,如何将接收的实体中字段值为空字符串的字段转为null

Open OnceCrazyer opened this issue 1 year ago • 7 comments

请描述您的问题

询问有关本项目的使用和其他方面的相关问题。 使用post方法时且使用requestBody接收数据时,如何将接收的实体中字段值为空字符串的字段值转为null

OnceCrazyer avatar Nov 28 '23 10:11 OnceCrazyer

自己注册一个String的Reader,在这个 reader里处理

oooopl avatar Nov 29 '23 01:11 oooopl

自己注册一个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);

OnceCrazyer avatar Nov 29 '23 01:11 OnceCrazyer

你这个是 filter不是ObjectReader,读不支持 ValueFilter,你可以看下源码 读仅支持 AutotypeFilter 和 ExtraProcessor

oooopl avatar Nov 29 '23 02:11 oooopl

我试了 没生效

oooopl avatar Dec 14 '23 06:12 oooopl

目前有个没有办法的解决办法 重写com.alibaba.fastjson2.support.spring6.http.converter.FastJsonHttpMessageConverter#read方法,手动使用正则表达式去除空串然后 再交由 fastjson2 处理

oooopl avatar Dec 15 '23 07:12 oooopl

可以参考正则,但是我觉得很不严谨,也没研究出其它办法 String EMPTY_STR_PATTERN = ",?\"\\w+\":\"\",?" image

不知道ObjectReaderModule能否实现

oooopl avatar Dec 15 '23 07:12 oooopl

舍弃了上面的实现方式。非常不严谨,可以让前端处理

oooopl avatar Dec 19 '23 06:12 oooopl