我的Spring启动应用程序中具有以下实体和反序列化器:
@Entity
@Table(name="user_account_entity")
@JsonDeserialize(using = UserAccountDeserializer.class)
@JsonSerialize(using = UserAccountSerializer.class)
public class UserAccountEntity implements UserDetails {
@Id
private String id;
private String username;
private String password;
public UserAccountEntity(final String username, final String password) {
this.password = password.trim();
this.username = username.trim();
}
//....
}
public class UserAccountDeserializer extends JsonDeserializer<UserAccountEntity> {
@Override
public UserAccountEntity deserialize(JsonParser jp,
DeserializationContext ctxt) throws IOException,
JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
final String username = node.get("username").asText();
final String password = node.get("password").asText();
return new UserAccountEntity(username, password);
}
}
如果在请求正文中传递的json不包含任何属性username
或password
,则将引发NullPointerException
。我想将异常更改为更有意义的内容,例如扩展JsonProcessingException
的类之一的实例。
我有两个问题:
1.哪些类扩展JsonProcessingException
?
2.除了使用node.has
逐一检查预期属性之外,还有没有更好的方法来检查预期属性是否存在?