我需要使用@jsonview在反序列化时抛出异常。
我的pojo:
public class Contact
{
@JsonView( ContactViews.Person.class )
private String personName;
@JsonView( ContactViews.Company.class )
private String companyName;
}
我的服务:
public static Contact createPerson(String json) {
ObjectMapper mapper = new ObjectMapper().configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES , true );
Contact person = mapper.readerWithView( ContactViews.Person.class ).forType( Contact.class ).readValue( json );
return person;
}
public static Contact createCompany(String json) {
ObjectMapper mapper = new ObjectMapper().configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES , true );
Contact company = mapper.readerWithView( ContactViews.Company.class ).forType( Contact.class ).readValue( json );
return company;
}
我需要实现的是,如果我试图创建一个人,我只需要传递“personname”。如果我传递'companyname',我需要抛出异常。如何使用@jsonview实现这一点?有别的选择吗?
1条答案
按热度按时间b5buobof1#
我想
@JsonView
不足以解决这个问题。以下是详细信息:当反序列化不属于视图的属性时,不会引发UnrecognedPropertyException但我只是查看了源代码,并设法结合
@JsonView
和习俗BeanDeserializerModifier
. 它并不漂亮,但这里有一个重要的部分:下面是如何在对象Map器上注册它:
这对我很有效,我现在遇到了无法识别的属性异常: