-1

我有以下 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;
                }
            }
4

1 回答 1

1

没有办法知道您的代码出了什么问题,因为我们没有完整的图片。你提供的片段给我们留下了部分画面。也就是说,我们可以提供以下帮助:

1.) 向我们展示 Date_Queries() 对象的组成部分。它是如何提出请求的?等等。

2.) 向我们展示 $response 对象的结构。

3.) 在尝试解析之前将 Java 请求结果打印到控制台。验证它是否正确。

4.) 用 try/catch 包围你的 Java 并打印堆栈跟踪,这样你就可以更好地评估任何类型的错误。

5.) 向我们展示您在哪里设置 result_code,以及任何其他可能的响应

6.) 向我们展示所有相关代码

7.) 向我们展示所有相关代码

8.)旁注,你应该在php中使用单引号,总是,除非你知道你在做什么......$response['information'] = ...

编辑:


根据您在下面的评论,您遇到的问题是将您的响应视为一个数组,而不是一个对象......请阅读 JSON 规范:

http://www.json.org/

数组:[ 1, 2, 3, 4 ] 对象:{ "key1":"val1", "key2":"val2" }

如果您将基础对象视为对象,则它应该停止抛出当前正在抛出的异常。

您可以使用参数 ofjson_encode()来确保数组中的所有响应都转换为对象。键将是数组索引。

json_encode($ob,JSON_FORCE_OBJECT);


如果问题不在于响应的最外层类型,请检查以确保它的其他部分,例如“信息”,实际上是正确的。例如,mysql_fetch_array可以返回 FALSE,这意味着当它到达你的 Android 应用程序时它不是一个数组:

http://php.net/manual/en/function.mysql-fetch-array.php


最后一点,您应该停止使用 mysql_* 函数,而改用 PDO。

http://us2.php.net/manual/en/book.pdo.php

于 2013-10-30T19:18:21.980 回答