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

响应返回Int类型数据时抛出NumberFormatException异常排查求助

接口响应NumberFormatException异常排查指南

已提供排查材料

  • 错误信息:received error
  • 接口JSON响应:jsonresponse
  • 接收数据Data class定义:data class

常见触发原因

  • 字段类型不匹配
    若接口返回的目标字段为字符串格式的数字(如"total": "100")、带小数的浮点型数字(如"total": 100.0"),直接用Int类型接收会触发类型转换异常。
  • 数值超出Int承载范围
    32位Int的取值范围为-2147483648到2147483647,若接口返回的数值超过该范围,会转换失败,需要将Data class中对应字段的类型修改为Long。
  • 空值适配异常
    若接口对应字段可能返回Null,但Data class中定义的是不可空Int类型,解析框架转换时也会抛出该异常,可将字段修改为可空类型Int?,或配置解析框架的全局默认值规则。

修复方案

如果确认接口返回的数值本身是合法整数,仅格式不匹配,可以通过自定义解析适配器兼容,以Gson为例的适配代码如下:

// 兼容多类型转Int的适配器
class IntTypeAdapter : TypeAdapter<Int>() {
    override fun write(out: JsonWriter, value: Int?) {
        out.value(value ?: 0)
    }

    override fun read(reader: JsonReader): Int {
        return when (reader.peek()) {
            JsonToken.NUMBER -> reader.nextInt()
            JsonToken.STRING -> reader.nextString().toIntOrNull() ?: 0
            JsonToken.NULL -> {
                reader.nextNull()
                0
            }
            else -> {
                reader.skipValue()
                0
            }
        }
    }
}

如果使用Moshi、Jackson等其他解析框架,也可以参考相同逻辑配置对应的类型转换器实现兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:09:02