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字符串中只包含这些属性。

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/zouhong/p/12091306.html
Copyright © 2011-2022 走看看