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

Firebase getKey返回值类型转换异常:String无法转为long求助

解决Firebase数据库String转Long崩溃的问题

嘿,这个错误我太熟了!本质上就是Firebase在尝试把数据库里的字符串类型值转换成你代码里声明的Long类型变量时失败了,完全是类型不匹配搞的鬼。咱们先把报错核心拎出来看:

FATAL EXCEPTION: main
Process: com.example.ahmad.carrental, PID: 15975
com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long

这个报错直接明说:数据库里存的是String,你代码里却硬要用Long去接,这不就撞车了嘛!下面分两种常见情况给你解决办法:

情况1:数据库里的值本来应该是数字,却不小心存成了字符串

先打开Firebase控制台,找到对应的数据库节点,看看那个值是不是带引号的字符串(比如显示的是"123"而不是纯数字123)。如果是存错了:

  • 要么直接在控制台把字符串改成数字;
  • 要么修改你写入数据库的代码,确保写入的是Long类型而不是String:
    // 错误写法:把数字当成字符串存了
    databaseReference.child("price").setValue("200");
    // 正确写法:直接存Long类型数值
    databaseReference.child("price").setValue(200L);
    

情况2:数据库里的值确实是字符串,但你代码里误用了Long接收

这种情况就得调整代码了,要么改接收的字段类型,要么手动转换:

  • 方法一:如果用了POJO实体类,直接把对应字段改成String:
    // 错误写法:用Long接收字符串值
    private Long carPrice;
    // 正确写法:用String匹配数据库类型
    private String carPrice;
    
  • 方法二:如果需要把字符串转成Long使用,读取时手动处理(记得加异常捕获,防止值不是合法数字):
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // 先按String读取数据库里的值
            String priceStr = dataSnapshot.child("carPrice").getValue(String.class);
            try {
                // 转换成Long类型
                Long priceLong = Long.parseLong(priceStr);
                // 在这里用转换后的数值更新视图就好
                textViewPrice.setText(String.valueOf(priceLong));
            } catch (NumberFormatException e) {
                // 万一字符串不是合法数字,这里做容错处理
                e.printStackTrace();
                textViewPrice.setText("无效价格");
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
            // 处理数据库读取取消的情况
        }
    });
    

额外小提醒

  • 写入数据库时尽量保持类型一致:数字就用Long/Integer,文本就用String,别混着来;
  • 读取数据时优先用getValue(Class<T>)指定明确类型,别依赖Firebase的自动转换;
  • 用POJO映射的话,一定要保证实体类字段类型和数据库里的类型完全对应,不然很容易踩这种类型转换的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:16:25