我的JSON:如何实现自定义序列化功能在fasterxml
{ "name": "asdf", "age": "15", "address": { "street": "asdf" } }
如果街道为null,与JsonSerialize.Inclusion.NON_NULL
,我可以得到..
{ "name": "asdf", "age": "15", "address": {} }
但我想这样的东西..(当地址不为空,它是一个新的/空的对象,但街道是空的。)
{ "name": "asdf", "age": "15" }
我以为有自定义序列化功能,如JsonSerialize.Inclusion.VALID_OBJECT
。 在Address类中添加isValid()方法,然后如果返回true serialize否则不要序列化。
但我不知道如何进一步/哪个类来覆盖。这是可能的或任何其他意见呢?请建议。
新增类
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;
}
}
注:我现在不担心反序列化。即地址对象的丢失。
在此先感谢。
你试过我的建议吗? – Pracede 2014-12-04 08:08:03
@Pracede感谢您的关注。是的,我已经尝试过,但没有解决问题。它避免了街道(空),但没有在序列化中寻址(新实例/空对象)。 – Malai 2014-12-04 16:15:20
你可以添加你的java类吗? – Pracede 2014-12-04 16:32:15