私のJSON:
{
"name": "asdf",
"age": "15",
"address": {
"street": "asdf"
}
}
street が null の場合、 でJsonSerialize.Inclusion.NON_NULL
取得できます..
{
"name": "asdf",
"age": "15",
"address": {}
}
しかし、私はこのようなものを取得したい.. (住所がnullでない場合、それは新しい/空のオブジェクトです.しかし、通りはnullです.)
{
"name": "asdf",
"age": "15"
}
のようなカスタムシリアライゼーション機能があると思いましたJsonSerialize.Inclusion.VALID_OBJECT
。Address クラスに isValid() メソッドを追加し、それが true を返す場合はシリアライズし、それ以外の場合はシリアライズしません。
しかし、さらに進める方法/オーバーライドするクラスがわかりません。これは可能ですか、またはこれに関する他の見解はありますか? 提案してください。
追加されたクラス
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
Customer customer = new Customer();
customer.setName("name");
customer.setAddress(new Address());
mapper.writeValue(new File("d:\\customer.json"), customer);
}
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Customer {
private String name;
private Address address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Address {
private String street;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
注: 現在、デシリアライゼーションについて心配していません。つまり、アドレス オブジェクトの損失です。
前もって感謝します。