解析简单的JSON数组

时间:2014-02-23 10:03:49

标签: android arrays json parsing

我正在尝试解析这个相对简单的JSON数组:

{
   "tags":[
      "Cheese",
      "Milk",
      "Yoghurt"
   ],
   "success":1,
   "message":"Tags found"
}

我得到的是:

        Log.d("Tag products: ", json.toString());

        try {
            // Checking for SUCCESS TAG
            int success = json.getInt("success");

            if (success == 1) {
                // products found
                // Getting Array of Products
                JSONArray products = json.getJSONArray("tags");

            } else {
                // no products found
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

我的数组完全记录到我的logcat。我成功地检索了成功和消息的价值。但是我无法解析实际的标签。

关于json解析的大多数示例和tutorails使用的是另一种格式,所以我也非常满意这个演示解析这种数组的示例。

2 个答案:

答案 0 :(得分:1)

循环遍历json数组并根据索引获取项目。

解析

JSONArray products = json.getJSONArray("tags");
for(int i=0;i<products.length();i++)
{
String value= (String) products.get(i);
Log.i(".........",value);
}

你也可以看看@ gson

https://code.google.com/p/google-gson/

答案 1 :(得分:0)

您共享的json对象可以建模为以下Model类:

 public class ModelClass
    {
        public List<string> tags { get; set; }
        public int success { get; set; }
        public string message { get; set; }
    }

一旦将json字符串解析为ModelClass的对象,就可以访问标记列表并获取其中的值。

您可以使用gson解析器进行反序列化。

Gson gsonParser = new Gson();
ModelClass modelObject = new ModelClass();
modelObject = gsonParser.fromJson(jsonString, modelObject.getClass());

for(String tagString : modelObject.tags)
{
   Log.d("AppTag", tagString);
}