簡體   English   中英

JSONException:類型java.lang.String的值無法轉換為JSONObject

[英]JSONException: Value of type java.lang.String cannot be converted to JSONObject

我是android的新手,但是我發現了一個應用程序可以很好地使用網絡刮刀,我一直在努力工作並填充數據庫。 這是一個基本的應用程序,它使用PHP腳本從MySQL數據庫中檢索值,並在Android設備上顯示它們。

這是PHP:

<?php
try {
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, *******);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $results=$conn->query('SELECT * FROM Recipes');

    while ($results = $row->fetch(PDO::FETCH_ASSOC)){
    $output[]=$row;
    print(json_encode($output));
    }

} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
$conn = null;
?>

原始代碼使用mysql_connect,但我實現了PDO。

這是Java:

protected void onPostExecute(Void v) {

        // ambil data dari Json database
        try {
            JSONArray Jarray = new JSONArray(result);
            for(int i=0;i<Jarray.length();i++)
            {
            JSONObject Jasonobject = null;
            //text_1 = (TextView)findViewById(R.id.txt1);
            Jasonobject = Jarray.getJSONObject(i);

            //get an output on the screen
            //String id = Jasonobject.getString("id");
            String name = Jasonobject.getString("Title");
            String db_detail="";

            if(et.getText().toString().equalsIgnoreCase(name)) {
            db_detail = Jasonobject.getString("ingredient");
            text.setText(db_detail);
            break;
            }
            //text_1.append(id+"\t\t"+name+"\t\t"+password+"\t\t"+"\n");

            }
            this.progressDialog.dismiss();

        } catch (Exception e) {
            // TODO: handle exception
            Log.e("log_tag", "Error parsing data "+e.toString());
        }
    }

Logcat說:

解析數據時出錯org.json.JSONException:java.lang.String類型的值br無法轉換為JSONArray

我試過從這個stackoverflow問題中使用{左大括號和}右大括號解決方案,但我不認為就是這樣。

在post執行后首先獲取JSONObject然后再獲取數組。 如果仍然是相同的消息,那么您的服務器不會返回正確的json對象。

JSONObject jobj = new JSONObject(result);
JSONArray Jarray = jobj.getJSONArray("output");
<?php
try {
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, ********);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

$sql=mysql_query("select * from Recipes");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>

這沒什么。 你混淆了mysql_ *和PDO是不是 可能 如果與PDO建立連接,則無法使用mysql_ *查詢來訪問數據庫。

因此,您會收到錯誤,並且您的頁面無效Json,這會導致錯誤。

相反,僅使用PDO(由於安全問題,不推薦使用mysql_ *):

<?php
try {
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, ********);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

$sql = $conn->query("select * from Recipes");
while (($row = $sql->fetch(PDO::FETCH_ASSOC)) !== false)
    $output[]=$row;
print(json_encode($output));
?>

如果您的結果是數組列表,那么您可以使用以下代碼執行此操作

ArrayList<String> list = new ArrayList<String>();
list.add("blah");
list.add("bleh");
JSONArray jsArray = new JSONArray(list);

JSONException:值

[英]JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM