首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android/Java中的JSON数组迭代

Android/Java中的JSON数组迭代
EN

Stack Overflow用户
提问于 2010-08-05 03:13:49
回答 4查看 221.7K关注 0票数 152

我正在构建一个android应用程序,需要下载并与在线数据库同步,我从应用程序发送我的查询到一个php页面,该页面返回JSON格式的数据库中的相关行。

有人能告诉我迭代JSON数组的最好方法吗?

我收到一个对象数组:

[{json object},{json object},{json object}]

我可以用来访问数组中的JSONObjects的最简单的代码是什么?

编辑:现在我想到了我用来迭代循环的方法是:

代码语言:javascript
复制
for (String row: json){
     id = row.getInt("id");
     name = row.getString("name");
     password = row.getString("password");
}

所以我想我已经能够以某种方式将返回的Json转换为可迭代的数组。你知道我怎么才能做到这一点吗?

我为我的流浪道歉,但我从网上找到的一个例子中找到了这个例子,但后来就找不到了。

EN

回答 4

Stack Overflow用户

发布于 2011-06-17 01:31:17

我认为这段代码是简短而清晰的:

代码语言:javascript
复制
int id;
String name;
JSONArray array = new JSONArray(string_of_json_array);
for (int i = 0; i < array.length(); i++) {
    JSONObject row = array.getJSONObject(i);
    id = row.getInt("id");
    name = row.getString("name");
}

这就是你要找的吗?

票数 343
EN

Stack Overflow用户

发布于 2016-05-30 11:01:39

当我尝试@vipw的建议时,我遇到了这样的异常:The method getJSONObject(int) is undefined for the type JSONArray

相反,这对我是有效的:

代码语言:javascript
复制
int myJsonArraySize = myJsonArray.size();

for (int i = 0; i < myJsonArraySize; i++) {
    JSONObject myJsonObject = (JSONObject) myJsonArray.get(i);

    // Do whatever you have to do to myJsonObject...
}
票数 5
EN

Stack Overflow用户

发布于 2013-02-19 10:46:32

如果您使用的是开源的JSON.org Java implementation,您只需让JSONArray实现Iterable接口,并将以下方法添加到类中:

代码语言:javascript
复制
@Override
public Iterator iterator() {
    return this.myArrayList.iterator();
}

这将使JSONArray的所有实例都可迭代,这意味着for (Object foo : bar)语法现在可以使用它(请注意,foo必须是一个对象,因为JSONArrays没有声明的类型)。所有这些都是有效的,因为JSONArray类由一个简单的ArrayList支持,它已经是可迭代的。我想其他的开源实现也同样容易修改。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3408985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档