我有以下php代码:
$response["information"] = mysql_fetch_array($result) ;
echo json_encode($response);
我的php语句只返回和数组。我想要做的是在android中读取该数组的元素,所以我编写了以下代码,但似乎无法正常工作:
Date_Queries date_info_query = new Date_Queries();
json = date_info_query.getDateInformation(uid_request,is_your_request);
if (json.getString("result_code") != null) {
// Result Code = 0 --> Succesfully Select
if (json.getString("result_code").equals("0")){
JSONArray information = json.getJSONArray("information");
JSONObject jobj = information.getJSONObject(0);
status = jobj.getString("status");
return 0;
}
}
答案 0 :(得分:1)
无法知道您的代码有什么问题,因为我们没有完整的图片。你提供的片段给我们留下了部分图片。也就是说,我们可以提供帮助:
1。)向我们展示Date_Queries()对象的组成部分。它是如何提出要求的?等
2。)向我们展示$ response对象的结构。
3.。)在尝试解析之前,将Java请求结果打印到控制台。验证它是否正确。
4.。)在try / catch中包围Java并打印堆栈跟踪,以便更好地评估任何类型的错误。
5.。)告诉我们您在哪里设置result_code以及任何其他可能的回复
6。)向我们展示所有相关代码
7.)向我们展示所有相关代码
8。)旁注,除非你知道自己在做什么,否则你应该在php中使用单引号,$response['information'] = ...
编辑:
根据您在下面的评论,您遇到的问题是您将响应视为数组,而不是对象...请阅读JSON规范:
数组:[1,2,3,4] 对象:{“key1”:“val1”,“key2”:“val2”}
如果您将基础对象视为对象,则应停止抛出当前正在抛出的异常。
您可以使用json_encode()
参数来确保数组中的所有响应都转换为对象。键将是数组索引。
json_encode($ob,JSON_FORCE_OBJECT);
如果问题不在最外层类型的响应中,请检查以确保其中的其他部分(例如“信息”)实际上是正确的。例如,mysql_fetch_array
可以返回FALSE,这意味着它在到达您的Android应用时不是数组:
http://php.net/manual/en/function.mysql-fetch-array.php
最后请注意,您应该停止使用mysql_ *函数,而是使用PDO。