如何在Android Studio中解析JSON

时间:2016-08-16 22:12:14

标签: android json api android-studio

我正在试图弄清楚如何解析来自Android Studio内部的Zoho CRM API的数据。我比较新,但我知道如何解析JSON响应中的数据,如下所示:

    {
      "Data": [
         { "subdata": "data"
     }
  ]
}

有些类似于我可以在Android Studio中解析没问题,即使有多个子数据点,也不是那么难。但是,在解析看起来像这样的数据时,我完全失去了:

      {"response":{"result":{"Contacts":{"row":[{"no":"1","FL":
    [{"content":"1822766000000272057","val":"CONTACTID"},
{"content":"Lisa","val":"First Name"}]},{"no":"2","FL":
[{"content":"1822766000000119148","val":"CONTACTID"},
{"content":"Eric","val":"First 
Name"}]}]}},"uri":"/crm/private/json/Contacts/searchRecords"}}

有没有人知道如何在Android Studio中解析这样的数据?

更新:我在Json Viewer中有一张JSON的照片:

enter image description here

1 个答案:

答案 0 :(得分:1)

一层一层地拿走它。它可以得到一些冗长,所以我喜欢有一个名为JSONUtils的类,并使用这样的便利方法来帮助解析JSON,而不必将所有东西都包装在try-catch块中:

/**
 * Retrieves a json object from the passed in json object.
 * @param json The json object from which the returned json object will be retrieved.
 * @param key The key whose value is the json object to be returned.
 * @return A json object.
 * */
public static JSONObject jsonObjectFromJSONForKey(JSONObject json, String key) {
    try { 
        return json.getJSONObject(key); 
    }
    catch (JSONException e) { 
        return null; 
    }
}

您可以为任何其他数据类型制作此变体,通过这样做,您可以在一个区域中使用try-catch块,并在调用这些方法时检查null。

JSONObject responseJSON = JSONUtils.jsonObjectFromJSONForKey(json, "response");
if (responseJSON != null) {
    JSONObject resultJSON = JSONUtils.jsonObjectFromJSONForKey(responseJSON, "result");
    // So on and so forth...
}