我正在尝试从我的 Android 应用运行我的自定义云代码功能。我觉得这很奇怪,我认为平台指南中没有充分记录。
请帮助我,我在这上面浪费了太多时间!
自定义云代码函数返回一个对象数组,如下所示:
[
{
"status":false,
"usr":{
"URL":"a string",
"__type":"Object",
"blacklisted":false,
"className":"_User",
"createdAt":"2015-09-28T08:22:09.266Z",
"description":"a string",
"email":"a string",
"emailVerified":true,
"facebookId":"a string",
"first_name":"a string",
"gender":"male",
"last_name":"a string",
"name":"Filippo",
"objectId":"a string",
"updatedAt":"2015-09-28T12:58:31.455Z",
"username":"a string"
}
}
// Some other objects...
]
现在我正尝试通过以下方式从 Android 客户端调用云代码函数:
final HashMap<String, ParseObject> params = new HashMap<String, ParseObject>();
ParseCloud.callFunctionInBackground("getConversations", params, new FunctionCallback<ArrayList<JSONObject>>() {
@Override
public void done(final ArrayList<JSONObject> results, ParseException e) {
myAdapter = new InboxAdapter(getActivity(), results);
listview.setAdapter(myAdapter);
}
}
不过,自从使用 ArrayList<JSONObject>
以来,我遇到了一些奇怪的行为因为回调的通用性不允许我填充适配器,它不断返回 java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject
在getItem()
方法
private ArrayList<JSONObject> list;
private Context ctx;
public InboxAdapter(Context c, ArrayList<JSONObject> s) {
ctx = c;
list = s;
}
/* All other methods */
@Override
public JSONObject getItem(int position) {
return list.get(position); // Gives exception!
}
我发现它真的很奇怪,因为它是 JSONObject
的 ArrayList s 并且不应该关心 map 等。
还尝试使用 new FunctionCallback<JSONArray>() {}
反弹我回来,因为它需要一个数组列表! (老实说,我不明白为什么)。
那么Android端这样的响应应该怎么处理呢?为了正确解析结果,我必须做些什么吗?
提前致谢。
最佳答案
您好,您可以修改用云编写的 getConversations() 吗?在响应中传递一个 Json 对象。成功...这是一个工作示例,其中测试是您的 getConversations() 函数:-
Parse.Cloud.define("test", function(request, response) {
var text = "hello world";
var jsonObject = {
"answer": text
};
response.success(jsonObject);
});
然后像这样调用它并从 android 获取值:-
ParseCloud.callFunctionInBackground("test", null, new FunctionCallback< Map<String, Object> >() {
public void done(Map<String, Object> mapObject, ParseException e) {
if (e == null){
Toast.makeText(appContext, mapObject.get("answer").toString(), Toast.LENGTH_LONG).show();
}
}
});
关于android - Parse.com 从云 clode 函数接收 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847632/