SpringMvc中全局设置了`JSONWriter.Feature.WriteMapNullValue`,如何单独指定某个类型设置不过滤NULL(也就是fastjson)默认序列化方式
SpringMvc中全局设置了JSONWriter.Feature.WriteMapNullValue,不过滤NULL值,
如何针对某个类型过滤NULL值,JSONWriter.Feature中是否存在过滤NULL的值
@Bean
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
//自定义配置
FastJsonConfig config = new FastJsonConfig();
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
config.setReaderFeatures(JSONReader.Feature.FieldBased, JSONReader.Feature.SupportArrayToBean);
config.setWriterFeatures(JSONWriter.Feature.WriteMapNullValue);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(StandardCharsets.UTF_8);
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
return converter;
}
`
WriteNulls?
WriteNulls?
WriteNulls 是允许不过滤NULL 值
没明白你的意思,你意思是某个具体的类型过滤 null 值,其它类型不过滤?
没明白你的意思,你意思是某个具体的类型过滤 null 值,其它类型不过滤?
就是这个意思。
JSONType 注解是否可以实现你的需求
JSONType的 serializeFeatures 这个属性吗,我在这个枚举里面貌似没有找到过滤NULL的值,也就是默认值
JSONType的serializeFeatures这个属性吗,我在这个枚举里面貌似没有找到过滤NULL的值,也就是默认值
🤔serializeFilters 配一个PropertyFilter
那这个有点痛苦了😖
JSONField#serializeFeatures 这个能满足你的需求么?
JSONField#serializeFeatures 这个能满足你的需求么?
目前好像没有,我是希望能在这里找到默认虚拟化方式对应的值
那这个有点痛苦了😖
PropertyFilter这种方式不行?痛苦的点在哪?涉及的类型太多?🤔
public class PropertyNullValueFilter implements PropertyFilter {
@Override
public boolean apply(Object object, String name, Object value) {
return value != null;
}
}
@JSONType(serializeFilters = PropertyNullValueFilter.class)
public class User {
private String username;
private String password;
//getter setter...
}
那这个有点痛苦了😖
PropertyFilter这种方式不行?痛苦的点在哪?涉及的类型太多?🤔
public class PropertyNullValueFilter implements PropertyFilter { @Override public boolean apply(Object object, String name, Object value) { return value != null; } } @JSONType(serializeFilters = PropertyNullValueFilter.class) public class User { private String username; private String password; //getter setter... }
你这个看起来不痛苦😂,可以解决。我原以为每个类型可能都要定义一个不同的PropertyFilter。
但是serializeFeatures 为什么没有提供一个默认的序列化方式的值呢,感觉这里面加会更好一点。
那这个有点痛苦了😖
PropertyFilter这种方式不行?痛苦的点在哪?涉及的类型太多?🤔
public class PropertyNullValueFilter implements PropertyFilter { @Override public boolean apply(Object object, String name, Object value) { return value != null; } } @JSONType(serializeFilters = PropertyNullValueFilter.class) public class User { private String username; private String password; //getter setter... }你这个看起来不痛苦😂,可以解决。我原以为每个类型可能都要定义一个不同的
PropertyFilter。
你这个有点定制化,默认是不输出 null 值字段的
那这个有点痛苦了😖
PropertyFilter这种方式不行?痛苦的点在哪?涉及的类型太多?🤔
public class PropertyNullValueFilter implements PropertyFilter { @Override public boolean apply(Object object, String name, Object value) { return value != null; } } @JSONType(serializeFilters = PropertyNullValueFilter.class) public class User { private String username; private String password; //getter setter... }你这个看起来不痛苦😂,可以解决。我原以为每个类型可能都要定义一个不同的
PropertyFilter。你这个有点定制化,默认是不输出 null 值字段的
确实默认是不输出NULL值字段的。
但是使用JSON 来进行全局配置的时候,也会遇到一样的情况。针对某个对象需要默认的序列化。感觉PropertyFilter不是最优解
package com.alibaba.fastjson2;
interface JSON {
static void config(JSONReader.Feature... features);
static void config(JSONWriter.Feature... features);
}