Без специального сериализатора Джексон будет включать ваш объект.
Решение 1: заменить новый объект на ноль
person.setDetails(new PersonDetails());
с
person.setDetails(null);
и добавьте
@JsonInclude(Include.NON_NULL)
public class Person {
Решение 2: Пользовательский сериализатор
public class PersonDetailsSerializer extends StdSerializer<PersonDetails> {
public PersonDetailsSerializer() {
this(null);
}
public PersonDetailsSerializer(Class<PersonDetails> t) {
super(t);
}
@Override
public void serialize(
PersonDetails personDetails, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
// custom behavior if you implement equals and hashCode in your code
if(personDetails.equals(new PersonDetails()){
return;
}
super.serialize(personDetails,jgen,provider);
}
}
и в вашем PersonDetails
public class Person {
private String name;
@JsonSerialize(using = PersonDetailsSerializer.class)
private PersonDetails details;
}