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

使用Retrofit构建REST客户端时遭遇NumberFormatException问题求助

解决方案

问题根源

错误日志明确显示:Gson尝试将UUID格式的字符串"b839c9e1-1ee6-4e77-a05a-e862a0f9724c"解析为double类型,导致NumberFormatException。这说明你的Wizard实体类中id字段的类型与接口返回的JSON数据类型不匹配——接口返回的是字符串格式的UUID,而你之前将id设为int或double,类型完全不兼容。

修复步骤

  1. 修改实体类id字段类型为String
    将Wizard类中的id字段改为String类型,确保和接口返回的JSON数据类型一致:

    public class Wizard {
        private String id;
        private String firstName;
        private String lastName;
    
        // 按需添加构造方法、Getter/Setter方法
        // 或者使用Java 16+的Record简化定义:
        // public record Wizard(String id, String firstName, String lastName) {}
    }
    
  2. 可选:使用UUID类型(Java 16+)
    如果你的项目使用Java 16及以上版本,可以直接将id字段设为java.util.UUID类型,Gson会自动完成UUID字符串到UUID对象的解析:

    import java.util.UUID;
    
    public class Wizard {
        private UUID id;
        private String firstName;
        private String lastName;
    
        // 对应的构造、Getter/Setter方法
    }
    
  3. 验证接口定义
    确保RESTApi接口中的方法返回类型与实体类结构匹配,比如:

    import retrofit2.Call;
    import retrofit2.http.GET;
    import java.util.List;
    
    public interface RESTApi {
        @GET("your-endpoint-path") // 替换为实际的接口路径
        Call<List<Wizard>> loadWizards();
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:55:47