如果json不包含必需的属性,则自定义Jackson解串器将引发异常

时间:2018-09-27 06:31:26

标签: java

我的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不包含任何属性usernamepassword,则将引发NullPointerException。我想将异常更改为更有意义的内容,例如扩展JsonProcessingException的类之一的实例。

我有两个问题: 1.哪些类扩展JsonProcessingException? 2.除了使用node.has逐一检查预期属性之外,还有没有更好的方法来检查预期属性是否存在?

0 个答案:

没有答案