Android - 如何解析包含对象的json数组

3

我是初学者,对于没有键的json数据,我不知道如何解析。

以下是我的Json数据:

[
            {
                "products_id":10052,
                "products_name":"\u0e08\u0e35\u0e19 : The Haven Sword and Dragon Sabre - \u0e01\u0e23\u0e30\u0e1a\u0e35\u0e48\u0e1f\u0e49\u0e32\u0e14\u0e32\u0e1a\u0e21\u0e31\u0e07\u0e01\u0e23 1994 **\u0e1a\u0e32\u0e07\u0e15\u0e2d\u0e19\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22**",
                "products_description":"<P>\u0e19\u0e31\u0e01\u0e41\u0e2a\u0e14\u0e07:<BR>- \u0e2b\u0e21\u0e48\u0e32\u0e08\u0e34\u0e48\u0e07\u0e40\u0e17\u0e32 (Steven Ma Jing Tao) \u0e23\u0e31\u0e1a\u0e1a\u0e17 \u0e40\u0e15\u0e35\u0e22\u0e1a\u0e48\u0e2d\u0e01\u0e35\u0e49 \u0e01\u0e31\u0e1a...",
                "products_date_available":"0",
                "products_image":"100909-TheHavenSword.jpg",
                "addDate":"2010-10-24 09:59:58"
            },
            {
                "products_id":10117,
                "products_name":"Nogizaka Haruka no Himitsu - \u0e04\u0e27\u0e32\u0e21\u0e25\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e22\u0e31\u0e22\u0e04\u0e38\u0e13\u0e2b\u0e19\u0e39 Season 1 + 2 (\u0e1a\u0e23\u0e23\u0e22\u0e32\u0e22\u0e44\u0e17\u0e22) **\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22\u0e1a\u0e32\u0e07\u0e15\u0e2d\u0e19\u0e20\u0e32\u0e1e\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e40\u0e2a\u0e35\u0e22\u0e07\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a**",
                "products_description":"<P>Nogizaka Haruka \u0e19\u0e32\u0e07\u0e40\u0e2d\u0e01\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e1b\u0e47\u0e19\u0e44\u0e2d\u0e14\u0e2d\u0e25\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e02\u0e2d\u0e07\u0e42\u0e23\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e19\u0e35...",
                "products_date_available":"0",
                "products_image":"10-NogizakaHarukaNoHimitsu.jpg",
                "addDate":"2010-09-30 10:20:03"
            }

我无法循环遍历此Json,因为没有一个方法调用的键 .getJSONArray("key")。

这是我的Java代码:

JSONObject object = new JSONObject(resultValue);

    //JSONArray jsonArray = object.getJSONArray("key");
    for (int i = 0; i < jsonArray.length(); i++){
     JSONObject objJson = jsonArray.getJSONObject(i);
     int products_id = objJson.getInt("products_id");
     String products_name = objJson.getString("products_name");
     Toast.makeText(getApplicationContext(),products_name,Toast.LENGTH_SHORT).show();

                    }

我不是专家,但我的第一步会是检查这里的参考文献(http://developer.android.com/reference/org/json/JSONObject.html)。我会说 JSONObject 的方法 names() 和 get() 可能会有所帮助。但似乎有很多可能性。 :) - winner_joiner
可能在这里使用JSONArray会更好(http://developer.android.com/reference/org/json/JSONArray.htmlml)。我想JSONArray的length()和get()方法可能会有所帮助。 :) - winner_joiner
感谢 winner_joiner 的帮助。 - Lmstart
2个回答

8

您的结果包含一个带有两个索引(0,1)的JSONArray。 运行循环两次或JSONArray的大小。根据键products_id获取值。

JSONArray array = new JSONArray(yourStringData);
for(int i = 0; i<array.length() ; i++){
   String productInfo = array.get(i);

   JSONObject object = new JSONObject(productInfo );
   String myRequiredData = object.get("products_id");
 }

Fahad Ishaque,谢谢您。 - Lmstart

3
您需要初始化JSONArray,而不是JSONObject:
JSONArray jsonArray = new JSONArray(resultValue); //resultValue is your string

之后,您可以遍历这个数组:
for (int i = 0; i < jsonArray.length(); i++){
 ...
}

哦,你已经回答了它。我的错! - Fahad Ishaque
感谢,那很有效!谢谢你,你是我的英雄! - Lmstart

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