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

如何从对象Getter中Toast JSON数组的user_review_ids值?

解决Toast显示数组引用而非实际元素的问题

这个问题我太熟悉了!你看到的[Ljava.lang.String.;@41c19f...其实是数组默认调用toString()方法的输出——它只会告诉你这是一个数组对象,不会把里面的具体元素展示出来,和你用copyOf、clone()复制数组没关系,因为这些操作只是复制了数组本身,并没有改变它的字符串表现形式。

给你几个简单有效的解决方案:

1. 用Arrays.toString()快速格式化(推荐)

这是最省事的方法,Java的java.util.Arrays类提供了专门的toString方法来处理数组,能直接把数组转换成[元素1, 元素2, 元素3]格式的字符串。

示例代码:

// 先导入java.util.Arrays包
import java.util.Arrays;

// 假设你已经从JSON里解析出了user_review_ids数组
int[] userReviewIds = yourJsonObject.getIntArray("user_review_ids"); 
// 或者如果是String数组的话:String[] userReviewIds = yourJsonObject.getStringArray("user_review_ids");

String displayText = Arrays.toString(userReviewIds);
Toast.makeText(getApplicationContext(), displayText, Toast.LENGTH_SHORT).show();

2. 手动拼接自定义格式的字符串

如果想要更个性化的展示(比如去掉方括号、用顿号分隔元素),可以用StringBuilder或者StringJoiner来手动拼接:

用StringBuilder(兼容所有Android版本)

StringBuilder sb = new StringBuilder();
for (int i = 0; i < userReviewIds.length; i++) {
    sb.append(userReviewIds[i]);
    // 不是最后一个元素的话加分隔符
    if (i != userReviewIds.length - 1) {
        sb.append("、"); // 这里可以换成你想要的分隔符,比如", "
    }
}
Toast.makeText(getApplicationContext(), sb.toString(), Toast.LENGTH_SHORT).show();

用StringJoiner(Android API 26+可用)

StringJoiner joiner = new StringJoiner(", ", "", "");
for (int id : userReviewIds) {
    joiner.add(String.valueOf(id));
}
Toast.makeText(getApplicationContext(), joiner.toString(), Toast.LENGTH_SHORT).show();

为什么copyOf、clone()没用?

因为这些方法只是创建了一个新的数组对象,本质上还是数组类型,直接传递给Toast的话,还是会调用数组默认的toString()方法,自然还是显示那个看不懂的引用字符串。核心问题是要把数组转换成可读的字符串,而不是复制数组本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:09