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这类序列化库,只要模型类的字段类型改对了,解析逻辑不用额外调整,库会自动适配字符串类型的字段。
- 如果是用原生JSON解析,原来的
第三步:适配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
相关产品推荐
相关产品推荐

