使用Retrofit构建REST客户端时遭遇NumberFormatException问题求助
解决方案
问题根源
错误日志明确显示:Gson尝试将UUID格式的字符串"b839c9e1-1ee6-4e77-a05a-e862a0f9724c"解析为double类型,导致NumberFormatException。这说明你的Wizard实体类中id字段的类型与接口返回的JSON数据类型不匹配——接口返回的是字符串格式的UUID,而你之前将id设为int或double,类型完全不兼容。
修复步骤
修改实体类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) {} }可选:使用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方法 }验证接口定义
确保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
相关产品推荐
相关产品推荐

