zoukankan      html  css  js  c++  java
  • 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字符串中只包含这些属性。

  • 相关阅读:
    程序员佛祖保佑无bug、发发发 -注释代码
    27 友盟项目--azkaban资源调度
    26 友盟项目--数据可视化
    25 友盟项目--sqoop从hive导出数据到mysql
    24 友盟项目--优化-flume限速拦截、flume自定义源防丢失--改造exec源守护线程监控目录(防丢失)redis维护key(去重)
    23 友盟项目--sparkstreaming对接kafka、集成redis--从redis中查询月留存率
    22 友盟项目--sparkstreaming对接kafka、集成redis--从redis中存储用户使用app的最小时间戳min , 最大时间戳max
    21 友盟项目--统计连续活跃用户、近期流失用户、留存用户--创建表并插入选择出的数据
    20 友盟项目--统计月活率、沉默用户、周回流用户--创建表并插入选择出的数据
    19 友盟项目--统计新增用户---日新增、周新增、月新增--创建表并插入选择出的数据
  • 原文地址:https://www.cnblogs.com/zouhong/p/12091306.html
Copyright © 2011-2022 走看看