我正在尝试测试以确保我想要的值在数组中。在第一个吐司下面工作,只是吐出我的整个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();
编辑根据反馈,它也可能是一个范围问题,因为它在“尝试”我是否必须尝试?如果是这样,我如何将其提供给脚本的其余部分。
答案 0 :(得分:3)
JSONArray
只是一个Java对象,而不是一个数组,这意味着你不能对它使用数组索引。也许你的意思是jsonData[1]
?此外,由于在jsonArray
块中声明并初始化了try
,因此它不在Toast
调用的范围内。假设jsonData
是Collection
:
try
{
JSONArray jsonArray = new JSONArray(jsonData);
// ...
Toast.makeText(MainActivity.this, jsonData.get(1), Toast.LENGTH_LONG).show();
}
// ...
答案 1 :(得分:3)
将最后一行更改为:
Toast.makeText(MainActivity.this, jsonArray.get(1).toString(), Toast.LENGTH_LONG).show();
或者,如果你知道元素1是一个字符串,
Toast.makeText(MainActivity.this, jsonArray.getString(1), Toast.LENGTH_LONG).show();
修改强>
根据你的编辑,我很尴尬,我没有看到它,但是,你确实有一个范围问题。移动try
块内的Toasts(除了我上面提到的内容)。
答案 2 :(得分:2)
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();
}