如何在Android中parsingJSON数组(不是Json对象)

我很难find一个方法来parsingJSONArray。 它看起来像这样:

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

我知道如何parsing它,如果JSON写入不同(换句话说,如果我有json对象返回,而不是一个对象数组)。 但这是我所拥有的一切,必须与之合作。

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

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

非常感激 !

使用下面的代码片断parsingJsonArray。

 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"); } 

希望能帮助到你。

我会给一个小jackson的例子:

首先创build一个具有JSONstring的字段的数据持有者

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

并parsingMyDataHolders的列表

 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; 
 public static void main(String[] args) throws JSONException { String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]"; JSONArray jsonarray = new JSONArray(str); for(int i=0; i<jsonarray.length(); i++){ JSONObject obj = jsonarray.getJSONObject(i); String name = obj.getString("name"); String url = obj.getString("url"); System.out.println(name); System.out.println(url); } } 

输出:

 name1 url1 name2 url2 

创build一个类来容纳这些对象。

 public class Person{ private String name; private String url; //Get & Set methods for each field } 

然后反序列化如下:

 Gson gson = new Gson(); Person[] person = gson.fromJson(input, Person[].class); //input is your String 

参考文章: http : //blog.patrickbaumann.com/2011/11/gson-array-deserialization/

在这个例子中,在一个json数组中有几个对象。 那是,

这是json数组:[{“name”:“name1”,“url”:“url1”},{“name”:“name2”,“url”:“url2”},…]

这是一个对象:{“name”:“name1”,“url”:“url1”}

假设你已经得到了一个名为jSonResultString的Stringvariables的结果:

 JSONArray arr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i<arr.length(); i++){ JSONObject jsonProductObject = arr.getJSONObject(i); String name = jsonProductObject.getString("name"); String url = jsonProductObject.getString("url"); } 

@Stebra看到这个例子。 这可能会帮助你。

 public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } 

当你得到结果时, 像这样parsing

 List<CustomerInfo> customers = null; customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType()); 

已经提到了一些很棒的build议。 使用GSON确实非常方便,为了使生活更轻松,您可以尝试这个网站它被称为jsonschema2pojo,并做到这一点:

你给它的JSON,它会生成一个Java对象,可以粘贴在您的项目。 你可以selectGSON来注释你的variables,所以从你的json中提取对象变得更容易!

我的情况从服务器加载例子..

 int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages")); if (jsonLength != 1) { for (int i = 0; i < jsonLength; i++) { JSONArray jsonArray = new JSONArray(jsonObject.getString("messages")); JSONObject resJson = (JSONObject) jsonArray.get(i); //addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at")); } 

希望它有帮助

  URL url = new URL("your URL"); connection = (HttpURLConnection) url.openConnection(); connection.connect(); InputStream stream = connection.getInputStream(); BufferedReader reader; reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } //setting the json string String finalJson = buffer.toString(); //this is your string get the pattern from buffer. JSONArray jsonarray = new JSONArray(finalJson); 

老职位,我知道,但除非我误解了这个问题,这应该做的窍门:

 s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]'; eval("array=" + s); for (var i = 0; i < array.length; i++) { for (var index in array[i]) { alert(array[i][index]); } 

}