【问题标题】:Error parsing JSON Object from PHP web service从 PHP Web 服务解析 JSON 对象时出错
【发布时间】:2023-03-03 13:53:02
【问题描述】:

我似乎从我的 PHP Web 服务中得到了一个不完整的 JSON 对象。我的PHP代码如下:

<?php
define('IEM_PATH', '../admin/com');
require_once('../admin/includes/config.php');
require_once('../admin/com/lib/IEM.class.php');
require_once ('../admin/com/lib/IEM/DBFACTORY.class.php');
require_once ('../admin/com/lib/IEM/baseAPI.class.php');
require_once ('../admin/com/lib/API/USERS.class.php');
require_once ('../admin/com/lib/IEM/baseRecord.class.php');
require_once ('../admin/com/lib/record/Users.class.php');

    function GetLists($userid = 0, $getUnconfirmedCount = false) {

        $userid = $_REQUEST['userID'];
        if (!$userid) {
        trigger_error('User object has no user id as parameter.', E_USER_NOTICE);
            return false;
        }


        if (!$userid) {
            $userid = $this->userid;
        }

        require_once('../admin/functions/api/lists.php');

        $listapi = new Lists_API();
        $returnA =  $listapi->GetListByUserID($userid, $getUnconfirmedCount);
        $returnResult1 = array();
            foreach ($returnA as $key => $value) { 
                //$lists[] = $key;
                $returnResult["contactList"][] = array("listID" => $returnA[$key]['listid'], "name" => $returnA[$key]['name']);
            }
       $returnResult["success"] = 1;
       echo json_encode($returnResult);
    }
    GetLists();

但是,当我尝试检索结果时,我的 logcat 只显示:

E/JSON Parser: Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
W/System.err: org.json.JSONException: No value for success

通过进行日志记录,我的 android 将返回我的 JSON 对象,如下所示

D/Returned JSON: {"androidid":"1"}

从这些代码

// getting JSON response from PHP web service
JSONObject returnedJSONObj = listsJSONParser.makeHttpRequest(Constant.URL
                    + "RetrieveList.php", "GET", params);

Log.d("Returned JSON ", String.valueOf(returnedJSONObj));

success = returnedJSONObj.getInt("success");

我不明白为什么当我的 PHP 确实根据代码返回 JSON 数组以及成功值时没有成功值,但是 android studio java 代码没有在 JSON 对象中检测到这些值。我在这里做错了什么?

【问题讨论】:

  • 您确定将请求发送到正确的 PHP 脚本吗?它与记录的 JSON 对象不匹配。
  • 如果不运行您的代码,我无法得到实际错误。但是您仍然可以尝试在echo json_encode 语句之后添加exit 语句。
  • 我认为您的代码需要更正getInt("success")。使用androidid instade。
  • @AddWebSolutionPvtLtd 我的主要问题不是 getInt 部分,而是返回的 JSON 对象,它应该具有属性 successcontactList

标签: java php android json


【解决方案1】:

你应该修改你的android代码

success = returnedJSONObj.getInt("success");

success = returnedJSONObj.getInt("androidid");

【讨论】:

  • 如果我这样做了,那么我会得到没有联系列表的值,联系列表也是应该在 JSON 对象中检索的属性之一,但事实并非如此。
  • 根据您的日志,您的 Json 是 {"androidid":"1"} 没有联系人列表详细信息。您调用错误的 URL 或您的 php 文件有问题。请检查您的 PHP文件并确保它生成正确的 json
【解决方案2】:

问题是你的 php 文件有问题,所以它没有返回 JSON 对象,而是返回一个带有错误的字符串。 如果您发送正确的 POST 或 GET 值到 URL,或者您检查数据库错误,您需要确保发送正确的 POST 或 GET 值。尝试记录来自 php 服务器的输入流以查看它发送的完整错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多