JSON 中JsonConfig的使用

我們通常對一個Json串和java對象進行互轉時,經常會有選擇性的過濾掉一些屬性值,而json-lib包中的JsonConfig爲我們提供了這種功能,具體實現方法有以下幾種。(1)建立JsonConfig實例,並配置屬性排除列表,(2)用屬性過濾器,(3)寫一個自定義的JsonBeanProcessor.

1. 實現JSONString接口的方法

public class Person implements JSONString { 
private String name; 
private String lastname; 
private Address address; 

// getters & setters 

public String toJSONString() {
return "{name:'"+name+"',lastname:'"+lastname+"'}";
}
}


2.第二種方法通過jsonconfig實例,對包含和需要排除的屬性進行方便的添加或刪除

public class Person { 
private String name; 
private String lastname; 
private Address address; 

// getters & setters 


JsonConfig jsonConfig = new JsonConfig(); 
jsonConfig.setExclusions( new String[]{"address"}); 
Person bean = new Person("jack","li"); 
JSON json = JSONSerializer.toJSON(bean, jsonConfig); 

3. 使用propertyFilter可以允許同時對需要排除的屬性和類進行控制,這種控制還可以是雙向的,也可以應用到json字符串到java對象

public class Person { 
private String name; 
private String lastname; 
private Address address; 

// getters & setters 


JsonConfig jsonConfig = new JsonConfig(); 
jsonConfig.setJsonPropertyFilter( new PropertyFilter(){ 

public boolean apply(Object source/* 屬性的擁有者 */, String name /*屬性名字*/, Object value/* 屬性值 */ ){ 
// return true to skip name 
return source instanceof Person && name.equals("address"); 

}); 
Person bean = new Person("jack","li");
JSON json = JSONSerializer.toJSON( bean, jsonConfig ) 

4. 最後來看JsonBeanProcessor,這種方式和實現JsonString很類似,返回一個代表原來的domain類的合法JSONObject

public class Person { 
private String name; 
private String lastname; 
private Address address; 

// getters & setters 


JsonConfig jsonConfig = new JsonConfig(); 
jsonConfig.registerJsonBeanProcessor( Person.class, new JsonBeanProcessor(){ 

public JSONObject processBean( Object bean, JsonConfig jsonConfig ){ 
if(!(bean instanceof Person)){ 
return new JSONObject(true); 

Person person = (Person) bean; 
return new JSONObject() .element( "name", person.getName()) .element( "lastname", person.getLastname()); 

}); 

Person bean = new Person("jack","li");
JSON json = JSONSerializer.toJSON( bean, jsonConfig );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章