我正在尝试将一些简单的javascript对象从我的Parse.com云功能(后端)传递到我的Android应用程序。
以下是javascript类的代码:
function Rate()
{
this.avgRate = 0.0;
this.numberOfRaters = 0;
}
以下是我如何传递它(2个选项):
response.success(resp); // {avgRate = 4,numberOfRaters = 1}
response.success(JSON.stringify(resp)); // {"avgRate":4,"numberOfRaters":1}
以下是我在java中获取它的方法:
Object test = ParseCloud.callFunction("createNewRate", params); // test is {avgRate = 4,numberOfRaters = 1} or {"avgRate":4,"numberOfRaters":1} (option 1 or 2)
JSONObject response = ParseCloud.callFunction("createNewRate", params); // here is a crash
我得到的错误是:
06-16 23:51:44.337: E/AndroidRuntime(13892): Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject
我该如何正确处理?
由于
答案 0 :(得分:1)
ParseCloud.callFunction(...)似乎返回一个HashMap而不是JSONObject(当你将java变量设置为Object时它是否崩溃?)。一种选择是将响应的变量类型从JSONObject更改为HashMap,然后迭代地图并使用map的键值对手动构建JSONObject ...以下是如何迭代hashmap的示例:< / p>
如果没有必要创建JSONObject,则可以绕过JSONObject并根据需要使用这些值。