【发布时间】:2016-07-15 18:22:32
【问题描述】:
我需要使用@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;
}
我需要实现的是,如果我想创建一个 Person,我只需要传递“personName”。如果我通过'companyName',我需要抛出异常。如何使用@JsonView 实现这一目标?有没有其他选择?
【问题讨论】:
-
你可以尝试创建2个类
CompanyContact extends Contact和PersonContact extends Contact -
@varren - 你的意思是 'CompanyContact' 和 'PersonContact' 的 2 个新类?
-
是的,如果你有这样的选项,它将有助于分离逻辑
-
@varren - 我目前只有这种结构。我面临的问题是我将有很多视图——比如具有不同值集的人、公司、用户等。我必须以这种方式创建很多类。我想知道是否可以使用 JsonView 避免它
标签: java spring jackson objectmapper