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

JSON反序列化为DTO时遇异常,求Map或其他对象接收方案

问题原因与解决方案

核心问题

JSON响应里的content是数组类型(用[]包裹),但你定义的DTO中content字段是Map类型,Jackson无法将数组反序列化为Map,因此抛出类型不匹配异常。

解决方案

方案1:用List<Map<String, Object>>接收数组内容

直接修改DTO的content字段类型,匹配JSON的数组结构,数组中的每个对象用Map存储键值对:

@Data
public class OtherResponse {
    @JsonProperty(value = "content")
    private List<Map<String, Object>> content;
}

反序列化后,你可以通过content.get(0).get("id")、content.get(0).get("reg")等方式获取特定键值对。

方案2:创建实体类接收结构化数据

如果需要更规范、类型安全的处理,可以创建对应content中对象的实体类:

@Data
public class ContentItem {
    private Integer id;
    private String reg;
    private String Email;
    private String Mobile;
    private String Name;
    private String Ip;
    private String Datetime;
}

然后修改DTO:

@Data
public class OtherResponse {
    @JsonProperty(value = "content")
    private List<ContentItem> content;
}

这种方式可以直接通过content.get(0).getId()、content.get(0).getReg()等方法获取字段,避免Map的类型转换风险。

补充说明

JSON中{}对应Java的Map或实体类,[]对应Java的List或数组,两者结构不兼容,这是导致反序列化失败的根本原因。根据你的需求选择合适的接收方式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:21