如何从Android中的URL解析JSON

时间:2013-09-18 02:14:33

标签: android

我想从URL解析JSON;我的JSON包含以下结构:

{
    "HasError": false,
    "ErrorMessage": null,
    "IsFinal": true,
    "content":
     {
        "item":[
                   {
                       "category": "xxx"
                   },
                   {
                       "category": "yy"
                   }
               ]
     }
}

我如何阅读这个结构?一个示例或JSON解析器会有所帮助。

2 个答案:

答案 0 :(得分:1)

使用Google的Gson。第一种方法是检索以JSON格式接收的数据,另一种方法是转换对象并作为JSON发送。您可以使用任何类型的对象。您可以创建一个具有所有这些参数的类,并使用该类的实例发送/接收。您只需要将JSON转换为字符串,使用toString()

即可轻松完成
import com.google.gson.Gson;    


public class JSONParser
{
    private static Gson gson = new Gson();

    public static Data jsonToData(String json)
    {   
        return gson.fromJson(json, Data.class);
    }


    /**
     * Converts the object to JSON
     * @param obj object from type Object
     * @return String of JSON format
     */
    public static String objectToJson(Object obj)
    {
        Gson writer = new Gson();
        return writer.toJson(obj);
    }
}

答案 1 :(得分:1)

请尝试下面这个。

String str = "{ \"HasError\": false, \"ErrorMessage\": null, \"IsFinal\": true, \"content\": { \"item\":[ { \"category\": \"xxx\" }, { \"category\": \"yy\" } ] } }";
        try {
             JSONObject jObject=new JSONObject(str);
             Log.d("HasError==", jObject.getString("HasError"));
             Log.d("ErrorMessage==", jObject.getString("ErrorMessage"));
             Log.d("IsFinal==", jObject.getString("IsFinal"));
             jObject = jObject.getJSONObject("content");
             JSONArray jArrayObject = new JSONArray(jObject.getString("item"));
             for (int i = 0; i<jArrayObject.length(); i++) {
                 Log.d("category==", jArrayObject.getJSONObject(i).getString("category").toString());
             }
        } catch (Exception e) {
        }