Fastjson序列化定制+空值、Null、空数组、List不序列化

虽然现在不推荐用FastJson了,但是今天遇到这个问题了还是说一下吧。

同事求助我一个问题:

第三方jar包里的一个对象,有些类型为List的属性,值为空list,不是null。使用JSON.toJSONString()方法,得到的json字符串这些属性的值为[]。序列化时怎么才能把这些类型为List的属性忽略掉?

自定义过滤器

可以自由实现你想要的规则

        旧写法
        PropertyFilter f = new PropertyFilter() {
     
            @Override
            public boolean apply(Object o, String key, Object value) {
     
                if (value == null) {
     
                    return false;
                }
                if(value instanceof  String && ((String) value).isEmpty()){
     
                    return false;
                }
                if(value instanceof List && ((List) value).size() == 0){
     
                    return  false;
                }
                return true;
            }
        };

        ///lambda
        PropertyFilter filter = (source, key, value) -> {
     
            if (value == null) {
     
                return false;
            }
            if(value instanceof  String && ((String) value).isEmpty()){
     
                return false;
            }
            if(value instanceof List && ((List) value).size() == 0){
     
                return  false;
            }
            return true;
        };

这样写就搞定了

JSON.toJSONString(entity, filter)

你可能感兴趣的:(JSON,java,json)