当前位置: 首页 > 知识库问答 >
问题:

JSON解析器错误

王修为
2023-03-14

我一直得到一个JSON解析器错误,每次我尝试连接从Android到php帐户。下面你会看到我得到的错误:

08-16 10:45:23.002: E/JSON Parser(848): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

谁能帮帮我吗。。。

PHP代码:

else{
            //Store user
            $user = $db->storeUser($name, $email, $password);
            if ($user) {
                // user stored successfully
                $response["success"] = 1;
                $response["uid"] = $user["unique_id"];
                $response["user"]["name"] = $user["name"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            }else{
                //User failed to store
                $response["error"] = 1;
                $response["error_msg"] = "Oops something went wrong! Please try late.";
                echo json_encode($response);
            }

Android代码: Android代码:

公共JSONObject getJSONFromUrl(字符串url,列表参数){

    //making HTTP request
    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    BufferedReader reader;
    try {
        reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while((line = reader.readLine()) !=null){
            sb.append(line + "n");
        }
        is.close();
        json = sb.toString();
        Log.e("JSON", json);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    //Try parse the string to a json object
    try{
        jObj = new JSONObject(json);
    }catch(JSONException e){
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    //return JSON string
    return jObj;

注册用户JSONObject

public JSONObject registerUser(String name, String email, String password){
        //building Parameters
        List<NameValuePair> params = new ArrayList();
        params.add(new BasicNameValuePair("tag", register_tag));
        params.add(new BasicNameValuePair("name", name));
        params.add(new BasicNameValuePair("email", email));
        params.add(new BasicNameValuePair("password", password));

        //Getting JSON object
        JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);

        //return json
        return json;

    }

PhP警告:

08-16 10:45:22.990: E/JSON(848): <br />n<b>Warning</b>:  mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>C:\xampp\htdocs\thryfting_api\include\DB_Functions.php</b> on line <b>89</b><br />n{"tag":"register","success":0,"error":1,"error_msg":"Oops something went wrong! Please try late."}n

php代码:

链接89是$no_of_rows

public function isUserExisted($email) {
        $result = mysql_query("SELECT email from users WHERE email = ' $email'");
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            // user existed
            return true;
        } else {
            // user not existed
            return false;
        }
    }

用户表结构:

create table users(
   uid int(11) primary key auto_increment,
   unique_id varchar(23) not null unique,
   name varchar(50) not null,
   email varchar(100) not null unique,
   encrypted_password varchar(80) not null,
   salt varchar(10) not null,
   created_at datetime,
   updated_at datetime null
);

mysql_error:

08-16 14:09:20.550: E/JSON(1028): <br />n<b>Warning</b>:  mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>C:\xampp\htdocs\thryfting_api\include\DB_Functions.php</b> on line <b>89</b><br />nNo database selected{"tag":"register","success":0,"error":1,"error_msg":"No database selected"}n

共有2个答案

黄毅
2023-03-14

php中构造前缺少_u;

岳鸿畴
2023-03-14

正如托尔加普在评论中指出的那样,关于“br”的内容看起来像是你的页面发回了一个PHP错误,其HTML格式(因此是br)而不是JSON字符串。你应该先尝试修复这个错误。

 类似资料:
  • 问题内容: 尝试对mongoexport使用查询会导致错误。但是mongo-client会评估相同的查询,而不会出错。 在mongo-client中: 使用mongoexport: 产生的错误: 但是预先在mongoexport中进行乘法: 作品! 为什么mongo在这两种情况下对查询的评估不同? 问题答案: 该命令行实用程序支持传递查询 JSON 格式,但您要评估 的JavaScript 在您的

  • 和 是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪: 它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中? 编辑:添加API响应(格式化):

  • 我有以下命令。我想循环使用此键和值,即对于冰/冷的项目,打印“值” 我试过这个: 却给我错误

  • 问题内容: 我正在使用JSON解析器提取值,并且正在使用以下jar json- path-2.1.0,当我调用在weblogic服务器上部署为webservice的用例时,出现以下错误:从json字符串中提取值,效果很好,但是用例的服务器版本引起了问题。我不确定耳朵中是否还有其他罐子会对这产生负面影响 问题答案: 偶然发现了同样的问题。 它不起作用的原因不是JDK8。之所以遇到此问题,是因为web

  • 我使用JSON解析器来提取值,并使用以下jar json-path-2.1.0,当我在weblogic服务器上调用作为webservice部署的用例时,我得到了以下错误。我编写了一个小的主程序来从JSON字符串中提取值,它工作得很好,但是用例的服务器版本给出了问题。我不确定是否有任何其他罐子的一部分,我的耳朵可以负面影响这一点

  • 问题内容: 我需要一些帮助,以设计一种策略来解析Talend作业(Java作业,而不是Perl)中的JSON文档。我正在使用Talend版本:5.0.2,并在Mac上进行开发,并计划在Linux机器上运行。 不幸的是,由于文件格式的原因,我无法使用tFileInputJSON组件- 每个文件包含数百个JSON文档,而完整的JSON文档占据了文件中的一行。我认为正确的解决方案是逐行读取文件,然后将其