0

我正在尝试将一些简单的 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

我应该如何正确处理这个?

谢谢

4

1 回答 1

1

似乎 ParseCloud.callFunction(...) 返回一个 HashMap 而不是 JSONObject (当您将 java 变量设置为 Object 时它崩溃了吗?)。一种选择是将响应的变量类型从 JSONObject 更改为 HashMap,然后迭代映射并使用映射的键值对手动构建 JSONObject ...这是一个如何迭代哈希映射的示例:

遍历 HashMap

如果不需要生成 JSONObject,您可以绕过 JSONObject 并根据需要使用值。

于 2013-06-16T21:39:29.010 回答