parse.com - Is this a valid JSONObject & if yes then how do I iterate to get all the values -


i have response server valid 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"}]} 

i wrote following code fail understand how not jsonobject. logcat shows error fatal exception: main java.lang.classcastexception: java.util.hashmap cannot cast 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");            (int = 0; < jsonarr.length(); i++) {                jsonobject json = jsonarr.getjsonobject(i);                //do processing...                }       } catch (jsonexception e1) {                     e1.printstacktrace();       } 

in cloudcode generating response this

parse.cloud.define("avgfunc", function(request, response) {   var idlist = request.params.someids;   var _ = require("underscore");    var newlist = {"avg":[]}; //this initialize & later push     ......   _.each(idlist,function(categoryid){    ......   query.find({   success: function(results) {    if(results.length==0){     console.log("no row found");     }     //some more processing of data & push      newlist.avg.push({              //&        "avg":somevalue,        "rcid":somevalue      });     }     if(counter == idlist.length)     {       response.success(newlist); //this sends response shown above     }    },   error: function() {     response.error("error.");   }  }); }); 

});

so wanna know how construct proper jsonobject can iterate on individual items later in android.

edit : stack trace

 2937-2937/com.muffin.testapp e/androidruntime﹕ fatal exception: main java.lang.classcastexception: java.util.hashmap cannot cast org.json.jsonobject         @ com.muffin.testapp.collinfoactivity$2.done(collinfoactivity.java:133)         @ com.parse.parsetaskutils$2$1.run(parsetaskutils.java:107)         @ android.os.handler.handlecallback(handler.java:605)         @ android.os.handler.dispatchmessage(handler.java:92)         @ android.os.looper.loop(looper.java:137)         @ android.app.activitythread.main(activitythread.java:4424)         @ java.lang.reflect.method.invokenative(native method)         @ java.lang.reflect.method.invoke(method.java:511)         @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784)         @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551)         @ dalvik.system.nativestart.main(native method) 

line 133 parsecloud.callfunctioninbackground("getavgrating", params, new functioncallback<jsonobject>() {

the json string seem legit. here's code parse it.

i'm using json-simple-1.1.1.jar downloaded here: https://code.google.com/p/json-simple/downloads/detail?name=json-simple-1.1.1.jar&can=2&q=

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 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.");     }  } 

edit: here's output.

starting example... json strings 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. 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -