• json学习系列(3)-JSONObject的过滤设置


    我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值。例如下面的实体类:

    package com.pcitc.json;
    
    /**
     * Person实体类
     * 
     * @Description
     * @author admin
     * @created 2015年6月29日 下午4:08:40
     * @version
     * @history
     * @see
     */
    public class Person {
        private String name;
        private String address;
        private String sex;
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    }

    如果我想过滤address属性怎么办?现在提供二种解决方法来实现对Person实体类的address属性的过滤。

    方法一:实现JSONString接口

    依然使用上面的Person实体类,让它实现JSONString接口,并重写JSONString接口的toJSONString()方法。如下:

    package com.pcitc.json;
    
    import net.sf.json.JSONString;
    
    /**
     * 实现JSONString Person实体类
     * 
     * @Description
     * @author admin
     * @created 2015年6月29日 下午4:18:37
     * @version
     * @history
     * @see
     */
    public class Person implements JSONString {
        private String name;
        private String address;
        private String sex;
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        /**
         * 实现过滤方法
         */
        @Override
        public String toJSONString() {
            // TODO Auto-generated method stub
            return "{"name":"" + name + "","sex":"" + sex + ""}";
        }
    }

    输出结果如下:

    方法二:设置jsonconfig实例,对包含和需要排除的属性进行添加或删除。

    实体类使用上面没有实现JSONString 接口的Person实体类。

    测试类如下:

    package com.pcitc.json;
    
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    
    public class TestPerson {
        public static void main(String args[]) {
            Person person = new Person();
            person.setName("swiftlet");
            person.setSex("men");
            person.setAddress("china");
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.setExcludes(new String[] { "address" });
            JSONObject json = JSONObject.fromObject(person, jsonConfig);
            System.out.println(json.toString());
        }
    }

    输出结果如下所示:

  • 相关阅读:
    2019-3-24
    模板
    试试Markdown编辑器
    Codeforces Round #529 (Div. 3) D. Circular Dance
    Codeforces Round #529 (Div. 3) C. Powers Of Two(数学????)
    poj 2566"Bound Found"(尺取法)
    poj 3273"Monthly Expense"(二分搜索+最小化最大值)
    二分搜索
    Codeforces Round #518 (Div. 2) B LCM
    2018.12.21 浪在ACM 集训队第十次测试赛
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4607788.html
Copyright © 2020-2023  润新知