Parse platform 这是一个有效的JSONObject&;如果是,那么如何迭代以获取所有值

Parse platform 这是一个有效的JSONObject&;如果是,那么如何迭代以获取所有值,parse-platform,jsonobject,Parse Platform,Jsonobject,我有一个来自服务器的响应,它是一个有效的JSON {"Avg":[{"avg":3,"rcid":"ww44sd"},{"avg":4,"rcid":"ww24hj"},{"avg":3,"rcid":"ww36hd"},{"avg":4,"rcid":"ww89yx"},{"avg":3,"rcid":"ww64tf"},{"avg":4,"rcid":"ww76py"}]} 我编写了以下代码,但我无法理解这是如何不是JSONObject的。Logcat显示此错误 致命异常:main jav

我有一个来自服务器的响应,它是一个有效的JSON

{"Avg":[{"avg":3,"rcid":"ww44sd"},{"avg":4,"rcid":"ww24hj"},{"avg":3,"rcid":"ww36hd"},{"avg":4,"rcid":"ww89yx"},{"avg":3,"rcid":"ww64tf"},{"avg":4,"rcid":"ww76py"}]}
我编写了以下代码,但我无法理解这是如何不是JSONObject的。Logcat显示此错误
致命异常:main java.lang.ClassCastException:java.util.HashMap无法强制转换为org.json.JSONObject

ParseCloud.callFunctionInBackground("avgfunc", params, new FunctionCallback<JSONObject>() {
public void done(JSONObject response, ParseException e) {
            if (e == null) { 

try {
      JSONObject jsonRoot = new JSONObject(response);
      JSONArray jsonarr = jsonRoot.getJSONArray("Avg");
           for (int i = 0; i < jsonarr.length(); i++) {
               JSONObject json = jsonarr.getJSONObject(i);
               //do some processing...
               }
      } catch (JSONException e1) {
                    e1.printStackTrace();
      }
}))

所以我想知道如何构造正确的JSONObject,以便稍后在android中迭代各个项目

编辑:堆栈跟踪

 2937-2937/com.muffin.testapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject
        at com.muffin.testapp.CollinfoActivity$2.done(CollinfoActivity.java:133)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

第133行是ParseCloud.callFunctionInBackground(“getAVGrating”,参数,new FunctionCallback(){

json字符串似乎是合法的。下面是一些解析它的代码

我使用的是从这里下载的json-simple-1.1.1.jar:


json字符串似乎是合法的。下面是一些代码来解析它

我使用的是从这里下载的json-simple-1.1.1.jar:


只是遇到了同样的问题。你的JSON没有什么问题,只是
callFunctionInBackground
函数将自己的所有JSONArray解析为List,而将JSONObject解析为
Hashmap
。因此,你实际上得到的不是一个JSONObject,而是一个
Hashmap
函数遇到了同样的问题。没有什么问题有了JSON,它就是
callFunctionInBackground
函数,它将自己所有的JSONArray解析为List,并将JSONObject解析为
Hashmap
。因此,你实际上得到的不是一个JSONObject,而是一个
Hashmap

,这里一定有你没有展示给我们的东西。你能给我们展示完整的堆栈跟踪,而不仅仅是t吗异常消息?这里一定有你没有给我们看的东西。你能给我们看完整的堆栈跟踪,而不仅仅是异常消息吗?这里一定有你没有给我们看的东西。你能给我们看完整的堆栈跟踪,而不仅仅是异常消息吗?
 2937-2937/com.muffin.testapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject
        at com.muffin.testapp.CollinfoActivity$2.done(CollinfoActivity.java:133)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class JsonExample {

    public static void main(String[] args) throws Exception {
        System.out.println("Starting example...");
        String str = "{\"Avg\":[{\"avg\":3,\"rcid\":\"ww44sd\"},{\"avg\":4,\"rcid\":\"ww24hj\"},{\"avg\":3,\"rcid\":\"ww36hd\"},{\"avg\":4,\"rcid\":\"ww89yx\"},{\"avg\":3,\"rcid\":\"ww64tf\"},{\"avg\":4,\"rcid\":\"ww76py\"}]}";
        JSONParser parser = new JSONParser();
        Object obj = parser.parse(str);
        JSONObject json = (JSONObject) obj;
        Object avgObj = json.get("Avg");
        JSONArray avgArray = (JSONArray) avgObj;
        System.out.println("JSON Strings for averages:");
        for(int i=0;i<avgArray.size();i++) {
            JSONObject current = (JSONObject)avgArray.get(i);
            System.out.println("\t" + current);
        }
        System.out.println("Averages:");
        for(int i=0;i<avgArray.size();i++) {
            JSONObject current = (JSONObject)avgArray.get(i);
            System.out.println("\tAvergage: " + current.get("avg"));
        }
        System.out.println("Done.");
    }

}
Starting example...
JSON Strings for averages:
    {"avg":3,"rcid":"ww44sd"}
    {"avg":4,"rcid":"ww24hj"}
    {"avg":3,"rcid":"ww36hd"}
    {"avg":4,"rcid":"ww89yx"}
    {"avg":3,"rcid":"ww64tf"}
    {"avg":4,"rcid":"ww76py"}
Averages:
    Avergage: 3
    Avergage: 4
    Avergage: 3
    Avergage: 4
    Avergage: 3
    Avergage: 4
Done.