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

Jackson多态反序列化报错:Unrecognized field 'files'求助

问题排查与解决

错误根源

你的Jackson多态注解配置和请求JSON结构不匹配,导致反序列化失败:

  • 基类MriImportRequest上的@JsonTypeInfo使用了include = As.WRAPPER_OBJECT,这要求整个子类实例必须被类型名称(files/sheets)的对象包裹,且这个包裹对象对应property = "settings"指定的字段。
  • 但你当前的请求JSON中,settings字段同时包含files子对象和基类的folderId/currency/locale字段,Jackson会尝试直接把settings解析为MriImportRequest实例,而该类没有files属性,因此抛出「Unrecognized field 'files'」错误。

两种修复方案

方案1:调整请求JSON结构(推荐,无需修改代码)

按照WRAPPER_OBJECT的规则,将基类字段移入files对象内部,settings直接指向这个files对象:

{
    "importType": "mri",
    "resourceUri": "riskdata/v1/exposuresets/es1/exposures/sdfd-2232-skdj-3434/portfolios/12",
    "settings": {
        "files": {
            "accountsFileId": 5387,
            "locationsFileId": 5388,
            "reinsuranceFileId": 5389,
            "mappingFileId": 5390,
            "folderId": 1686,
            "currency": "USD",
            "locale": "US"
        }
    }
}

方案2:修改Jackson注解配置(适配现有JSON结构)

如果不想调整请求JSON,可将@JsonTypeInfo的include改为As.PROPERTY,通过内部字段标识类型:

  1. 修改基类MriImportRequest的注解:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSubTypes({
  @JsonSubTypes.Type(value = MriExcelImportRequest.class, name = "sheets"),
  @JsonSubTypes.Type(value = MriTextFileImportRequest.class, name = "files")
})
public class MriImportRequest {
  private int folderId;
  private String locale;
  private String currency;
}
  1. 更新请求JSON,在settings内添加type字段指定类型:
{
    "importType": "mri",
    "resourceUri": "riskdata/v1/exposuresets/es1/exposures/sdfd-2232-skdj-3434/portfolios/12",
    "settings": {
        "type": "files",
        "accountsFileId": 5387,
        "locationsFileId": 5388,
        "reinsuranceFileId": 5389,
        "mappingFileId": 5390,
        "folderId": 1686,
        "currency": "USD",
        "locale": "US"
    }
}

补充说明

  • As.WRAPPER_OBJECT适合层级分明的结构,用类型名称作为实例的外层容器;
  • As.PROPERTY则通过实例内部的标识字段区分类型,更贴近常规JSON结构习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:30:54