toJson(object) を使用してオブジェクトをシリアル化し、toJson-parser に特定のメソッドを無視させることは可能ですか?
toJson() 解析を失敗させる User クラス (getSocial - Facebook 統合に関係する) にメソッドがあり、可能であればシリアライズ時にそのメソッドを無視したいと考えています。
これはできますか?
toJson(object) を使用してオブジェクトをシリアル化し、toJson-parser に特定のメソッドを無視させることは可能ですか?
toJson() 解析を失敗させる User クラス (getSocial - Facebook 統合に関係する) にメソッドがあり、可能であればシリアライズ時にそのメソッドを無視したいと考えています。
これはできますか?
fastjson と PropertyFilterを使用します。
サンプルコード
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 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);
値オブジェクト:
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;
}
}
Map
オブジェクトを反復処理して、List
指定された値のみに書き換えることができます。
Ebean を使用してオブジェクトを選択している場合は、オブジェクト全体をフェッチすることに注意してください。また、フェッチしてはならないデータも (パスワードやその他の資格情報として) フェッチします。