0

次のエラーが表示されます。

Error parsing data org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject

私が持っているAndroidとPHPのコードは次のとおりです。

private void eventUpdatePoint(String eventStatus,int lat,int lon){

    JSONParser jsonParserEUP = new JSONParser(); 
        try
        {   
            List<NameValuePair> params = new ArrayList<NameValuePair>(); 
            params.add(new BasicNameValuePair("longtitude", Integer.toString(lon))); 
            params.add(new BasicNameValuePair("latitude", Integer.toString(lat)));
            params.add(new BasicNameValuePair("eventstatus", eventStatus));
            String url_updatePoint = "http://10.0.2.2/android_connect/event_update_point.php";
            JSONObject json = jsonParserEUP.makeHttpRequest(url_updatePoint,"POST", params);
            Log.d("Response", json.toString()); 
        }
        catch(Exception e)
        {
            e.printStackTrace();
            Log.d("ERROR:","ERROR:"    + e.getClass().getName() + ":" + e.getMessage());
        }
    }

phpコード:

$response = array(); if (isset($_POST['longtitude']) && isset($_POST['latitude']) &&isset($_POST['eventstatus'])) { 
    $longtitude = $_POST['longtitude']; 
    $latitude = $_POST['latitude']; 
    $eventstatus = $_POST['eventstatus'];

    $e_id=0;
    $score=0;


    require_once __DIR__ . '/db_connect.php'; 

    $db = new DB_CONNECT(); 

    $result = mysql_query("SELECT id FROM cordinates WHERE longtitude=$longtitude AND latitude=$latitude") or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) { 

            $e_id = $row["id"];  
        } 
    $result = mysql_query("SELECT score FROM point WHERE e_id=$e_id") or die(mysql_error()); 

    if (mysql_num_rows($result) > 0) {

        while ($row = mysql_fetch_array($result)) { 

            $score = $row["score"];  
        } 
        if($eventstatus=="inc")
        {   
            $score+=10;
            $result = mysql_query("UPDATE point SET score=$score where e_id=$e_id") or die(mysql_error());  
            $response["success"] = 1; 
             $response["message"] ="Score point increased";
        }
        else if($eventstatus=="dec")
        {   
            $score-=10;
            $result = mysql_query("UPDATE point SET score=$score where e_id=$e_id") or die(mysql_error());
            $response["success"] = 0; 
             $response["message"] ="Score point decreased";
        }
    } 
    echo json_encode($response); 

私は何を間違っていますか?

4

2 に答える 2

1

使用している Web サービスは JSONArray を返します。JSONArray 型のオブジェクトを使用して格納する必要があります。JSONObject は使用できません。

この行を変更します。

JSONObject json = jsonParserEUP.makeHttpRequest(url_updatePoint,"POST", params);

...これに:

JSONArray json = jsonParserEUP.makeHttpRequest(url_updatePoint,"POST", params);
于 2013-03-24T17:57:03.783 に答える
0

応答をログに記録します。"[" で始まり "]" で終わる場合は、"JSONArray" 型の変数に格納する必要があります。ログに注意すると、応答は "JSONArray" でなければなりません。タイプ「JSONArray」の変数での応答。

于 2013-03-24T17:48:41.320 に答える