将javascript对象传递给java的JsonObject

时间:2013-06-16 21:06:03

标签: java javascript android json parse-platform

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

我该如何正确处理?

由于

1 个答案:

答案 0 :(得分:1)

ParseCloud.callFunction(...)似乎返回一个HashMap而不是JSONObject(当你将java变量设置为Object时它是否崩溃?)。一种选择是将响应的变量类型从JSONObject更改为HashMap,然后迭代地图并使用map的键值对手动构建JSONObject ...以下是如何迭代hashmap的示例:< / p>

Iterate through a HashMap

如果没有必要创建JSONObject,则可以绕过JSONObject并根据需要使用这些值。