如何在 Android 中解析 JSON 数组(不是 Json 对象)

2022-08-31 10:37:29

我很难找到如何解析JSONArray的方法。它看起来像这样:

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]

如果JSON的编写方式不同,我知道如何解析它(换句话说,如果我返回了json对象而不是对象数组)。但这就是我所拥有的一切,必须随之而来。

*编辑:这是一个有效的json。我用这个json做了一个iPhone应用程序,现在我需要为Android做这件事,但无法弄清楚。有很多例子,但它们都与JSONObject相关。我需要一些JSONArray的东西。

有人可以给我一些提示,或者教程或示例吗?

非常感谢!


答案 1

使用以下代码段来解析 JsonArray。

JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String name = jsonobject.getString("name");
    String url = jsonobject.getString("url");
}

答案 2

我只举一个杰克逊的例子:

首先创建一个数据持有者,其中包含JSON字符串中的字段

// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
    @JsonProperty("name")
    public String mName;

    @JsonProperty("url")
    public String mUrl;
}

并解析 MyDataHolder 列表

String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString, 
    new TypeReference<ArrayList<MyDataHolder>>() {});

使用列表项

String firstName = list.get(0).mName;
String secondName = list.get(1).mName;