• JSONObject.toJSONString()包含或排除指定的属性


    将一个实体对象转换成Json字符串 JSON.toJSONString()

    FastJson提供的SerializeFilter类可以指定转换时要包含的属性,或者指定转换时要排除的属性。

     JSONObject.toJSONString()默认忽略值为null的属性.

     使用JSONObject提供的以下方法将实体对象转换成Json字符串:(JSONObject 提供的toJSONString 源码   自己还没看)

     public static final String toJSONString(Object object, SerializerFeature... features) {
            SerializeWriter out = new SerializeWriter();
    
            try {
                JSONSerializer serializer = new JSONSerializer(out);
                for (com.alibaba.fastjson.serializer.SerializerFeature feature : features) {
                    serializer.config(feature, true);
                }
    
                serializer.write(object);
    
                return out.toString();
            } finally {
                out.close();
            }
        }
    View Code

    演示程序:

    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import com.alibaba.fastjson.support.spring.PropertyPreFilters;
    /**
     * 使用FastJson将实体对象转换成Json字符串测试类
     */
    public class FastJsonApplication {
         public static void main(String[] args) {
            User user = new User();
            user.setId(1L);
            user.setUsername("张三");
            user.setPassword("");
            user.setMobile(null);
            user.setCountry("中国");
            user.setCity("武汉");
         String jsonUser = null;
    
            /**
             * 指定排除属性过滤器和包含属性过滤器
             * 指定排除属性过滤器:转换成JSON字符串时,排除哪些属性
             * 指定包含属性过滤器:转换成JSON字符串时,包含哪些属性
             */
            String[] excludeProperties = {"country", "city"};
            String[] includeProperties = {"id", "username", "mobile"};
            PropertyPreFilters filters = new PropertyPreFilters();
            PropertyPreFilters.MySimplePropertyPreFilter excludefilter = filters.addFilter();
            excludefilter.addExcludes(excludeProperties);
            PropertyPreFilters.MySimplePropertyPreFilter includefilter = filters.addFilter();
            includefilter.addIncludes(includeProperties);
    
    
            /**
             * 情况一:默认忽略值为null的属性
             */
            jsonUser = JSONObject.toJSONString(user, SerializerFeature.PrettyFormat);
            System.out.println("情况一:
    " + jsonUser);
    
            /**
             * 情况二:包含值为null的属性
             */
            jsonUser = JSONObject.toJSONString(user, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);
            System.out.println("情况二:
    " + jsonUser);
    
            /**
             * 情况三:默认忽略值为null的属性,但是排除country和city这两个属性
             */
            jsonUser = JSONObject.toJSONString(user, excludefilter, SerializerFeature.PrettyFormat);
            System.out.println("情况三:
    " + jsonUser);
    
            /**
             * 情况四:包含值为null的属性,但是排除country和city这两个属性
             */
            jsonUser = JSONObject.toJSONString(user, excludefilter, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);
            System.out.println("情况四:
    " + jsonUser);
    
            /**
             * 情况五:默认忽略值为null的属性,但是包含id、username和mobile这三个属性
             */
            jsonUser = JSONObject.toJSONString(user, includefilter, SerializerFeature.PrettyFormat);
            System.out.println("情况五:
    " + jsonUser);
    
            /**
             * 情况六:包含值为null的属性,但是包含id、username和mobile这三个属性
             */
            jsonUser = JSONObject.toJSONString(user, includefilter, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);
            System.out.println("情况六:
    " + jsonUser);
        }
    
        /**
         * 用户实体类
         */
        public static class User {  
            private Long id;
            private String username;
            private String password;
            private String mobile;
            private String country;
            private String city;
        //此处省略了相应属性的set、get方法
    }

    运行结果:

     结果说明

    情况一和情况二说明了public static String toJSONString(Object object, SerializeFilter filter, SerializerFeature… features)这个方法将实体对象转换成JSON字符串时,默认是忽略掉值为null的属性,并且说明了如何使得转换后的JSON字符串包含值为null的属性。
    情况三和情况四说明了如何使用SerializeFilter来排除指定属性,使得转换后的JSON字符串中不包含这些属性。
    情况五和情况六说明了如何使用SerializeFilter来包含指定属性,使得转换后的JSON字符串中只包含这些属性。

  • 相关阅读:
    Git 学习小问题记录
    Spring缓存源码剖析:(一)工具选择
    最佳线程数
    Python 装饰器备忘
    使用SCSS扩展Bootstrap4
    Flask 路由相关操作
    Flask开发环境搭建
    Python数据分析开发环境
    Python中的矩阵操作
    Windows 安装 MySQL 8.0.11
  • 原文地址:https://www.cnblogs.com/zouhong/p/12091306.html
Copyright © 2020-2023  润新知