简体   繁体   English

字符串不能转换为JSONObject吗?

[英]String cannot be converted to JSONObject?

I'm a beginner in developing Android apps and it's the first time I'd be coding from scratch that's why I find it very hard for me. 我是开发Android应用程序的初学者,这是我第一次从头开始编写代码,这就是为什么我觉得这很困难。 Basically, I just want to get rid of the error so that I can now start with displaying the SQL table on my Android application. 基本上,我只想摆脱错误,以便现在就可以在Android应用程序上显示SQL表开始。 I am barred by this error as I was fetching the data from mySQL tables. 当我从mySQL表中获取数据时,我被此错误所阻止。 I am getting this at LogCat: 我在LogCat上得到这个:

Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
05-03 15:45:25.586: W/System.err(552): java.lang.NullPointerException
05-03 15:45:25.626: W/System.err(552):  at hs.stockapp.StocksTask.doInBackground(StocksTask.java:64)

If I understood the error right, something's wrong with line 64 of my StocksTask.java file. 如果我正确理解错误,则StocksTask.java文件的第64行出现了问题。

Line 64: if (json.getString(KEY_SUCCESS) != null) 第64行: if (json.getString(KEY_SUCCESS) != null)

StocksTask.java code excerpt: StocksTask.java代码节选:

protected Integer doInBackground(String... params)  {

    UserFunctions userFunction = new UserFunctions();
    JSONObject json = userFunction.findStocks();
    try {
        if (json.getString(KEY_SUCCESS) != null) {
            String res = json.getString(KEY_SUCCESS);

            if(Integer.parseInt(res) == 1){         
                DatabaseHandler db = new DatabaseHandler(activity.getApplicationContext());
                JSONObject json_stocks = json.getJSONObject("stocks");
                Log.v("company_name", json_stocks.getString(STOCK_COMPANY_NAME));
                userFunction.findStocks();
                db.findStocks(json_stocks.getString(STOCK_COMPANY_NAME), json_stocks.getString(STOCK_SYMBOL), json_stocks.getString(STOCK_MCAP));                        

                responseCode = 1;
                // Close Screen
                //finish();
            }else{
                responseCode = 0;
                // Error 
            }
        }
    }
    catch (NullPointerException e) {
        e.printStackTrace();
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
    return responseCode;
}

UserFunctions.java UserFunctions.java

 public JSONObject findStocks(){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", findstocks_tag));
    JSONObject json = jsonParser.getJSONFromUrl(stocksURL, params);
    // return json
    return json;
} 

index.php index.php

else if ($tag == 'stocks'){
    // request type is view stock list
    $stocks = $db->search_stocks();
    if ($stocks != false) {
        // stocks
        // echo json with success = 1
        $response["success"] = 1;
        $response["stocks"]["company_name"] = $stocks["name"];
        $response["stocks"]["com_sym"] = $stocks["com_sym"];
        $response["stocks"]["mkt_cap"] = $stocks["mkt_cap"];
        echo json_encode($response);
    } else {
        // no stocks found
        // echo json with error = 0
        $response["error"] = 1;
        $response["error_msg"] = "No stocks found";
        echo json_encode($response);
    }

} 

DB_functions.php DB_functions.php

    public function search_stocks() {
    $result = mysql_query("SELECT company_name, com_sym, mkt_cap from stock ORDER BY com_sym") or die(mysql_error());
    $no_of_rows = mysql_num_rows($result);

    if ($no_of_rows > 0) {
        while($row=mysql_fetch_assoc($result)){
            $output[] = $row;
        }               
        print(json_encode($output)); 
        return $row;            
    return true;
    } else {
        // stocks not existed
        return false;
    }
mysql_close();  

} }

Produced result of search_stocks function search_stocks函数的产生结果

[{"company_name":"Asian Chorva","com_sym":"ASIA","mkt_cap":"4534356"},{"company_name":"Banko de Oro","com_sym":"BDO","mkt_cap":"54434"},{"company_name":"Bank of the Phil Island","com_sym":"BPI","mkt_cap":"5464554"},{"company_name":"College Hive In Boon","com_sym":"CHIB","mkt_cap":"5434654"},{"company_name":"Critical Heart Throb Racing","com_sym":"CHTR","mkt_cap":"53544564654"}]

What should I do with Line 64?? 我应该对64号线做什么? MANY THANKS :) Any help will be greatly appreciated. 非常感谢:)任何帮助将不胜感激。 Additional info about it will be very helpful. 有关它的其他信息将非常有帮助。

The error message says: 错误消息显示:

Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 类型java.lang.String的值<!DOCTYPE无法转换为JSONObject

If it is <!DOCTYPE then it isn't [{"company_name":… . 如果是<!DOCTYPE ,则不是[{"company_name":…

You need to figure out exactly what request is being made and why the server is returning an HTML document. 您需要弄清楚正在发出什么请求,以及服务器为什么返回HTML文档。

Check your server logs. 检查您的服务器日志。 It might be an error document. 可能是错误文件。

正确检查您要在UserFunctions.java中显示为"http://10.0.2.2/api/"的url,其中api文件夹存储在www或htdocs文件夹中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM