我有一个pojo,大多数时候我不想将字段写入Json,但对于特定的条件,我想将此值写入Json。例如,我的模型是;
public class Person {
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
public String value;
}
是否可以将对象映射器配置为忽略@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
创建一个新的ObjectMapper并禁用MapperFeature.USE_ANNOTATIONS.
ObjectMapper objectMapper = new ObjectMapper();
objectMapper = objectMapper.disable(MapperFeature.USE_ANNOTATIONS);
Person person = objectMapper.convertValue(personJson, Person.class);
老实说,我不知道一个相当直接的方法来真正让ObjectMapper
忽略一个特定的注释,但为什么不使用@JsonView
s?
定义一些视图…
public class Views {
public static class Public {
}
public static class Internal {
}
}
…把它放在你的条件字段…
public class Person {
@JsonView(Views.Internal.class)
public String value;
}
…并将其与映射器序列化…
String result = mapper
.writerWithView(Views.Public.class)
.writeValueAsString(person);
上面的样本取自古老的Baeldung,在那里你可以找到这个解决方案的更漂亮的变体。