通过JSONObject迭代

Run*_*oop 4 android json

我将来自Web服务的响应解析为a JSONObject,在记录时,如下所示:

{"Preferences":"{Pref1=Apple, Pref2=Pear}"}
Run Code Online (Sandbox Code Playgroud)

我理解如何询问Preferences标签,例如jsonObject.get("Preferences").但是,我不明白我要回到什么对象,也不知道如何迭代它.如何迭代返回的对象jsonObject.get("Preferences")

Dan*_*iel 12

偏好返回的对象是String.如果要遍历"首选项"的子项,可能需要更改结构,例如:

{"Preferences":{"Pref1":"Apple", "Pref2":"Pear"}}
Run Code Online (Sandbox Code Playgroud)

并解析它像这样:

JSONObject inputJSON = new JSONObject("{\"Preferences\":{\"Pref1\":\"Apple\", \"Pref2\":\"Pear\"}}");
JSONObject preferencesJSON = inputJSON.getJSONObject("Preferences");
Iterator<String> keysIterator = preferencesJSON.keys();
while (keysIterator.hasNext()) 
{
        String keyStr = (String)keysIterator.next();
        String valueStr = preferencesJSON.getString(keyStr);
}
Run Code Online (Sandbox Code Playgroud)

或者,如果要保留结构,可以使用Preferences对象解析返回的字符串,如下所示:

JSONObject inputJSON = new JSONObject("{\"Preferences\":\"{Pref1=Apple, Pref2=Pear}\"}");
String preferencesStr = inputJSON.getString("Preferences");
JSONObject preferencesJSON = new JSONObject(preferencesStr);
Iterator<String> keysIterator = preferencesJSON.keys();
while (keysIterator.hasNext()) 
{
        String keyStr = (String)keysIterator.next();
        String valueStr = preferencesJSON.getString(keyStr);
}
Run Code Online (Sandbox Code Playgroud)