參考內容: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());