是否可以使用toJson(object)來序列化一個對象,並讓toJson-parser忽略某些方法?Java玩! toJson忽略某些方法
我們在User類(getSocial - 與Facebook集成有關)中有一個方法,它使toJson() - 解析失敗 - 並且我們希望它在序列化時忽略該方法(如果可能)。
可以這樣做嗎?
是否可以使用toJson(object)來序列化一個對象,並讓toJson-parser忽略某些方法?Java玩! toJson忽略某些方法
我們在User類(getSocial - 與Facebook集成有關)中有一個方法,它使toJson() - 解析失敗 - 並且我們希望它在序列化時忽略該方法(如果可能)。
可以這樣做嗎?
你可以只遍歷對象,並將其與僅指定值改寫爲Map
或List
。
請注意,如果您正在使用Ebean選擇你的目標是獲取整個對象,也數據,這不應該被取出(如密碼或其他憑證)
示例代碼
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.alibaba.fastjson.serializer.SerializeWriter;
PropertyFilter filter = new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
return false;
}
};
SerializeWriter out = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(out);
serializer.getPropertyFilters().add(filter);
A a = new A();
serializer.write(a);
String text = out.toString();
Assert.assertEquals("{}", text);
PropertyFilter
PropertyFilter filter = new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if("name".equals(name)) {
return true;
}
return false;
}
};
SerializeWriter out = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(out);
serializer.getPropertyFilters().add(filter);
A a = new A();
a.setName("chennp2008");
serializer.write(a);
String text = out.toString();
Assert.assertEquals("{\"name\":\"chennp2008\"}", text);
ValueObject:
public static class A {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
謝謝,儘管我剛剛結束了使用@JsonIgnore。 – nicohvi 2012-07-09 11:35:53