从JSONArray中获取特定的值

5

我是一名初学者,对于Android和JSON并不熟悉。希望有人能够帮助我?

我已经查阅了相关资料文章,但似乎并不是我需要的。我已经在这个项目上工作了一整天,也许我的大脑已经崩溃了...如果这个问题已经在其他地方得到了解答,请指引我去那里看看 :)

无论如何,我想从一个JSONArray中获取特定的对象 - 目前的情况是:

  JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                        JSONObject json_obj = jArray.getJSONObject(i);

                        name = json_obj.getString("txt_title");

                }

                txt_title.setText(name);

据我了解,result 返回整个JSONArray,然后使用for loop遍历这些结果并获取json对象的长度。目前,我只从数组中请求"txt_title"的值。到目前为止,还好吗? 那么我想做的是,仅设置数组中第三个"txt_title"的值。 目前,我希望txt_title.setText(name)显示"txt_title"中的所有标题,但它只显示数组中最后一个标题。这可能与for loop有关吧?
我应该如何选择要显示的对象?

你有可以展示给我们的JSON值吗? - chadpeppers
{"id":"1","txt_title":"Radament's Tomb","txt_description":"古埃及陶器收藏现已展出。","date_added":"2012-03-31"} ...等等 - Willis
你是想在ListView中显示它们,还是只想在单个TextView中显示JSON数组中的特定项? - louielouie
目前我正在使用 TextView 进行测试,最终打算使用 GridView,那样会行吗? - Willis
你的答案在这里:https://queception.com/question.php?question=117 - Stack Overflow
2个回答

9

目前您只显示列表中的最后一个,因为您在循环中每次都设置了名称。

name = json_obj.getString("txt_title");

每次迭代时,这会覆盖先前的值。如果您想拥有所有值,则需要以累加的方式进行操作。

name += json_obj.getString("txt_title");

如果你想从数组中获取指定的项,只需使用所需的索引访问它,而不是使用循环。
    if(jArray.length() > 2) {
         JSONObject json_obj = jArray.getJSONObject(2);   //get the 3rd item
         name = json_obj.getString("txt_title");
    }

希望这能帮助你理解如何访问它。

谢谢你,Brain,现在我明白了——非常有帮助的回答! - Willis
答案在这里:https://queception.com/question.php?question=117 - Stack Overflow

2
如果您能确保元素将存在于索引处,那么可以完全跳过循环。
JSONArray jArray = new JSONArray(result);
String name = jArray.getJSONObject(2).getString("txt_title");
txt_title.setText(name);

谢谢。听起来这个方法可能行得通,我会试一试!这是为了一个原型,所以目前只有虚拟数据,但在“现实世界”的情况下,你可能需要更新/删除数据库条目——对于这样的情况,最好的方法是什么? - Willis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接