我有一个接受FileImportInput的API,它具有以下模型
FileImportInput {
private String importType;
private String resourceUri;
@JsonProperty("settings")
private MriImportRequest settings;
}
此MriImportRequest是具有以下字段的基类
@JsonTypeInfo(use = Id.NAME, include = As.WRAPPER_OBJECT, property = "settings")
@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;
}
以下是具有以下定义的其他两个类。
@JsonTypeName("files")
public class MriTextFileImportRequest extends MriImportRequest {
private int accountsFileId;
private int locationsFileId;
private int reinsuranceFileId;
private int mappingFileId;
}
另一类如下所示
@JsonTypeName("sheets")
public class MriExcelImportRequest extends MriImportRequest {
private int accountsSheetIndex;
private int locationsSheetIndex;
private int reinsuranceSheetIndex;
private int mappingFileIndex;}
请求JSON如下,当我提出请求,无法识别的字段“文件”我不知道什么丢失.请求JSON如下
{
"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"
}
}
1条答案
按热度按时间ds97pgxw1#
JsonTypeInfo.As#WRAPPER_OBJECT
用于序列化,当你试图反序列化你的json时,所以在这种情况下没有使用它。相反,你可以使用JsonTypeInfo.Id#DEDUCTION
来根据可用的字段推导类型(在这种情况下,如果 files 属性可用,则值将自动反序列化到MriTextFileImportRequest
子类:然后下面的代码打印json输入文件: