0

通常、PHP サーバーに requet を送信して mysql テーブルのデータ セットをクエリすると、Andorid に送り返され、問題なく応答文字列 (JSONArray 文字列) が解析されます。使用される PHP コード セクションは次のとおりです。

....
if($result = mysql_query($sql, $link))
{
    if (mysql_num_rows($result) != 0) 
    {   
      while($row2 = mysql_fetch_array($result,MYSQL_ASSOC))
      {
          $data[]=$row;
      }
    }
}

print_r(urlencode(json_encode($data))); 
if (is_resource($result)) 
mysql_free_result($result);
mysql_close($link);

ただし、次の php コードのメソッドを使用して SQL クエリを完了した後、キーと値の文字列のもう 1 つのパーズを $data 配列に追加すると、次のようになります。

$data['new_key'] = "new_value";

新しい JSONArray 文字列の解析中に、Android 側で JSONArry Exception プロンプトが表示されます: ..... (値の部分は 2 バイトの漢字です)

Value {"new_key":"new_value","0":{"old_key1":"old_value1" ,"old_key2":"old_value2","old_key3":"old_value3",.....}} of type org.json.JSONObject cannot be converted to JSONArray

よろしければ、私が間違っていた場所とその解決方法を教えてください。ありがとうございます。

4

1 に答える 1

1

これを試して:

$data[]['new_key'] = "new_value";

また、print_r を削除して echo に置き換える必要があると思います。

echo urlencode(json_encode($data)); 

(ちなみに、urlencode を削除することもできます。)

于 2012-05-18T12:40:47.750 に答える