You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jackson反序列化JSON至Java对象时遭遇UnrecognizedPropertyException的问题求助

解决Jackson反序列化UnrecognizedPropertyException问题

嘿,我一眼就看出问题所在了!咱们先拆解下你的JSON结构和实体类的不匹配点:

你的JSON里,onWarning、onError、onSuccess每个字段下面还嵌套了一层alert对象,比如:

"onWarning":{"alert":{"isEnabled": true, "name": ""}}

但你的AlertConfig类里直接把onWarning定义成了Alert类型,Jackson尝试把{"alert":...}这个对象解析成Alert类时,发现Alert没有alert这个字段,所以抛出了UnrecognizedPropertyException。

解决方案1:新增中间包装类(最直观)

你需要一个类来对应JSON里那层包含alert的对象,比如创建AlertWrapper:

public class AlertWrapper {
    @JsonProperty("alert")
    public Alert alert;
}

然后修改AlertConfig,把原来的Alert类型字段换成AlertWrapper:

public class AlertConfig {
    @JsonProperty("onSuccess")
    public AlertWrapper onSuccess;
    @JsonProperty("onWarning")
    public AlertWrapper onWarning;
    @JsonProperty("onError")
    public AlertWrapper onError;
}

之后解析代码里的调用也要对应调整:

System.out.println(lib.action.onWarning.alert.isEnabled);

解决方案2:自定义反序列化(进阶方案)

如果不想新增类,也可以给Alert类添加自定义反序列化逻辑,直接跳过外层的alert字段读取内部数据,但这种方法会增加代码复杂度,不如第一种方案直观易维护。

额外提醒:修复JSON语法错误

你提供的JSON字符串最后少了一个闭合的},正确的JSON应该是:

{"action": {"onWarning":{"alert":{"isEnabled": true, "name": ""}}, "onError":{"alert":{"isEnabled": true, "name": ""}}, "onSuccess":{"alert":{"isEnabled": true, "name": ""}}}}

这个小问题也会导致解析失败,记得先修正它!

内容的提问来源于stack exchange,提问作者Shiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:22:34