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

使用RestTemplate获取JSON对象时遇HttpMessageNotReadableException异常排查

问题分析与解决方案

咱们直接说核心问题,你遇到的是Jackson反序列化的两个关键问题,一步步来解决:

1. 内部类的访问权限与实例化问题

错误提示里的no suitable constructor found, can not deserialize from Object value是关键,这是因为你的Address、Attribute、Phone都是private非静态内部类:

  • Jackson需要通过反射创建这些类的实例,但private修饰符会挡住外部(包括Jackson序列化器)的访问
  • 非静态内部类必须依赖外部类PoyntBusinessDetails的实例才能创建,Jackson没法自动处理这种依赖关系

修复方式:
把这些内部类改成public static修饰的静态内部类,这样它们就不依赖外部类实例,Jackson也能正常访问构造器:

public class PoyntBusinessDetails {
    // 原有字段保持不变...
    
    // 修改内部类为public static
    public static class Address { 
        // 字段 + getters/setters 
    }
    public static class Attribute { 
        // 字段 + getters/setters 
    }
    public static class Phone { 
        // 字段 + getters/setters 
    }
    
    // 原有构造器、getters/setters...
}

2. JSON字段与Java类字段不匹配问题

对比你的Java类和API返回的JSON,发现好几处字段名、类型不对应,这也会导致反序列化失败:

  • JSON里的createdAt → Java类的createdDate
  • JSON里的updatedAt → Java类的updatedDate
  • JSON里的activeSince → Java类的activatedDate
  • JSON里的attributes → Java类的attribute
  • 另外JSON里的mockProcessor是布尔值false,但Java类里定义成了String类型,类型不匹配也会报错

修复方式:
用Jackson的@JsonProperty注解映射字段名,同时修正类型不匹配的问题:

public class PoyntBusinessDetails {
    // 把mockProcessor类型改成boolean,匹配JSON的布尔值
    private boolean mockProcessor;
    
    // 用@JsonProperty指定对应的JSON字段名
    @JsonProperty("createdAt")
    private String createdDate;
    
    @JsonProperty("updatedAt")
    private String updatedDate;
    
    @JsonProperty("activeSince")
    private String activatedDate;
    
    @JsonProperty("attributes")
    private Attribute attribute;
    
    // 其他原有字段保持不变...
    
    // 已经改成public static的内部类...
}

最后检查点

  • 确保所有内部类(Address、Attribute、Phone)都有无参构造器(如果没写带参构造器,Java会自动生成;如果写了带参的,一定要手动加无参构造器)
  • 确认所有字段都有对应的getter/setter方法,Jackson默认靠这些方法赋值

这样修改后,RestTemplate的Jackson序列化器就能正确解析API返回的JSON了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:01:31