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

RecyclerView填充Dummy API数据失败,遇JSON类型转换异常求助

解决JSON中字符串类型order_no无法转为整数的问题

嘿,我看到你遇到的这个RecyclerView填充失败的问题了——报错信息已经把核心矛盾点得明明白白:你在解析JSON时,把order_no字段(值是OR-12345)当成整数来处理,但它本质是个带字母前缀的字符串,自然转不了int类型。咱们一步步来搞定它:

  • 第一步:修正数据模型类的字段类型
    你肯定是在对应的数据Bean(实体类)里把order_no定义成了int类型对吧?赶紧把它改成String类型,因为OR-12345包含字母和连字符,完全不符合整数的格式:

    // 错误写法
    private int order_no;
    
    // 正确写法
    private String order_no;
    
  • 第二步:调整JSON解析逻辑
    根据你用的解析方式做对应修改:

    • 如果是用原生JSON解析,原来的getInt()要换成getString():
      // 错误写法
      int orderNo = jsonObject.getInt("order_no");
      
      // 正确写法
      String orderNo = jsonObject.getString("order_no");
      
    • 如果是用Gson、Moshi这类序列化库,只要模型类的字段类型改对了,解析逻辑不用额外调整,库会自动适配字符串类型的字段。
  • 第三步:适配RecyclerView的Adapter显示
    如果你之前在Adapter的ViewHolder里是用String.valueOf(orderNo)来转成字符串显示,现在直接用setText(orderNo)就行,因为它本身就是字符串了,不需要再做类型转换。

额外补充:如果需要提取数字部分做运算

要是你之后需要用到OR-12345里的数字(比如12345),可以先对字符串做拆分处理:

String orderNoStr = "OR-12345";
// 拆分出连字符后的部分,再转为整数
int orderNum = Integer.parseInt(orderNoStr.split("-")[1]);

以后遇到这类JSON解析的类型不匹配报错,优先看报错里的字段值和类型,再对应检查自己的模型类和解析代码,这是最直接的排查思路哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:37:36