【问题标题】:Toast Array value not workingToast 数组值不起作用
【发布时间】:2011-10-14 18:47:49
【问题描述】:

我正在尝试测试以确保我想要的值在数组中。在第一个 toast 下面工作,只是吐出我的整个 JSON 数据字符串。

但是我试图在我的新 JSONArray 中显示 [1] 值的第二个 toast jsonArray 给了我以下错误jsonArray can not be defined to a variable我没有正确引用它吗?

try{
    JSONArray jsonArray = new JSONArray(jsonData);
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show();
Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show();

编辑根据反馈,它也可能是范围问题,因为它在“尝试”中我必须使用尝试吗?如果是这样,我如何使其可用于脚本的其余部分。

【问题讨论】:

  • 存在范围问题。我更新了我的答案。

标签: java android arrays json


【解决方案1】:

JSONArray 只是一个 Java 对象,而不是数组,这意味着您不能对其使用数组索引。也许你的意思是jsonData[1]?此外,由于jsonArraytry 块中声明和初始化,它不在Toast 调用的范围内。假设jsonDataCollection

try
{
    JSONArray jsonArray = new JSONArray(jsonData);
    // ...
    Toast.makeText(MainActivity.this, jsonData.get(1), Toast.LENGTH_LONG).show();
}
// ...

【讨论】:

  • 好的,我认为 jsonArray 是把它变成 java 数组的原因,所以我可以在我的项目的其余部分使用它。
  • 不,看看它是如何声明为JSONArray的?这意味着它不是 Java 数组。如果要将List 转换为数组,请使用List#toArray()。不过,我不确定您为什么要这样做 - 如果您只是想索引到列表中,请使用 List#get(int)
  • 谢谢,我认为我使用 JSONArray 的原因不正确。如果我可以像数组一样直接读取它,不知道为什么需要将它放入数组中。
  • XY problem 再次来袭
  • 做得好先生感谢您的链接,我会确保在发布时使用它作为指南。
【解决方案2】:

将最后一行改为:

Toast.makeText(MainActivity.this, jsonArray.get(1).toString(), Toast.LENGTH_LONG).show();

或者,如果你知道元素 1 是一个字符串,

Toast.makeText(MainActivity.this, jsonArray.getString(1), Toast.LENGTH_LONG).show();

编辑

根据您的编辑,我很尴尬我没有看到它,但是是的,您确实有范围问题。将 Toast 移到 try 块内(除了我上面建议的)。

【讨论】:

    【解决方案3】:

    jsonArray 变量未在与 Toast 相同的范围内声明。

    试试这样的:

        try {
            JSONArray jsonArray = new JSONArray(jsonData);
    
            Toast.makeText(MainActivity.this, jsonData, Toast.LENGTH_LONG).show();
            Toast.makeText(MainActivity.this, jsonArray[1], Toast.LENGTH_LONG).show();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多