JSONObject基本內容(二)

參考內容:http://swiftlet.net/archives/category/json  十分感謝!!!java

 

這部分的內容主要是講述 javaBean轉換爲JSONObect時,若是有些屬性不須要轉換,那麼該如何操做。json

過濾屬性在何時會用到呢?swift

有時候咱們會把對象以json格式傳送,若是一個對象攜帶着一些私人信息,那麼咱們就要先把這些信息過濾掉,再進行傳輸了。app

 

一)方法一:實現JSONString接口,實現toJSONString方法ide

那麼咱們如今寫一個Person類,實現這個JSONString接口測試

public class Person implements JSONString{
    private String name;
    private String address;
    private String sex;
    
    @Override
    public String toJSONString() {
        //{"name" : "name" , "sex" : "sex"},這裏省略了address屬性,由於咱們要把它過濾掉
        return "{\"name\":\"" + name + "\",\"sex\":\"" + sex + "\"}";
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
}

而後就寫相應的測試this

    public static void main(String[] args) {
        /**
         * 轉換爲json對象時,排除掉person中address屬性的三種方法
         */        
        System.out.println("方法一:Person類實現JSONString接口,實現toJSONString方法");
        
        Person person = new Person();
        person.setName("Rime");
        person.setSex("men");
        person.setAddress("china");
        JSONObject json = JSONObject.fromObject(person);
        System.out.println(json.toString());    
}

輸出結果:   spa

方法一:Person類實現JSONString接口,實現toJSONString方法
{"name":"Rime","sex":"men"}.net

 

二)方法二:在jsonConfig中配置excludescode

因爲Person類已經使用了方法一,具備侵入性,咱們再建一個類Person2

public class Person2 {
    private String name;
    private String address;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

而後過濾操做以下:

        Person2 person2 = new Person2();
        person2.setName("Rime2");
        person2.setSex("men");
        person2.setAddress("china");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[] {"address"});//排除掉address屬性
        JSONObject json2 = JSONObject.fromObject(person2,jsonConfig);
        System.out.println(json2.toString());

 

三)方法三:在jsonConfig中配置過濾器,把屬性過濾掉

過濾操做以下:

        Person2 person3 = new Person2();
        person3.setName("Rime3");
        person3.setSex("men");
        person3.setAddress("china");
        JsonConfig jsonConfig2 = new JsonConfig();
        //配置過濾器
        jsonConfig2.setJsonPropertyFilter(new PropertyFilter() {            
            @Override
            public boolean apply(Object source, String name, Object value) {
                //source:對象類型
                //name:屬性名
                //value:屬性值
                //可根據以上三種組合來過濾
                //Person2類型的address屬性過濾掉
                return source instanceof Person2 && name.equals("address");
            }
        });
        JSONObject json3 = JSONObject.fromObject(person3,jsonConfig2);
        System.out.println(json3.toString());
相關文章
相關標籤/搜索