ホームページ >バックエンド開発 >PHPチュートリアル >PHP バックエンドは Android との JSON インタラクションを実装します

PHP バックエンドは Android との JSON インタラクションを実装します

小云云
小云云オリジナル
2018-02-26 13:20:581951ブラウズ

私の周りの友人の中には、そのブログのコードを使うと、以下のコードでエラーが報告され、 builder.toString() を json オブジェクトに変換できないというエラーが出ると言っていました。 <br>

	JSONObject jsonObject   = new JSONObject(builder.toString());

<br> そして私も自分で試してみましたが、何も問題はありませんでした。そこで、友達が構築したphpサーバーのコードをいくつかチェックして、最終的に問題を発見しました。そこで、同じ穴に足を踏み入れた大多数の学生に役立つことを願って、これを書き留めました

これには php の json_decode 関数が含まれており、これが私の友人がエラーを犯した原因です。

次に、テストが成功したコードを書きます。Android 上の php サーバーに送信したのは jsonObject、{"name": "lala"} で、対応するエンティティ名は "userJson" です。以下のコード

	JSONObject jo = new JSONObject();
        jo.put("name", "test");
 
params.add(new BasicNameValuePair("userJson",jo.toString() ));

現時点で、私のサーバーサイドコードは

<?php  
    	$json_string = $_POST ["userJson"];  
	$user = json_decode($json_string,true);//这里的true加上就会将android发来的json字符串转化为关联数组
  	$arr = array(  
        &#39;user_id&#39; => $user["name"]
        );  
	$str = json_encode($arr);  
    	echo($str);  
?>

ですこの時点では、JSONObjectに変換できないエラーはAndroidで報告されません。もちろん、JSONArrayをに送信することもできます。サーバー側のサーバー。それが [{"name":"lalala"},{}] です

この場合、上記の PHP コードは最後の文まで正しく実行できません。このとき、コードを

<?php  
    	$json_string = $_POST ["userJson"];  
	$user = json_decode($json_string,true);//这里的true加上就会将android发来的json字符串转化为关联数组
  	$arr = array(  
        'user_id' => $user[0]["name"]
        );  
	$str = json_encode($arr);  
    	echo($str);  
?>
に修正する必要があります。

なぜこのように変更する必要があるのでしょうか?その理由は実は非常に簡単で、json_decode 関数に true を追加すると、受け取った $json_string が連想配列に変換されます。たとえば、最初の例では、jsonObject は

array(1){	["name"]=>String("test")	}

に変換されるため、$user["name"] を使用して文字列「test」を読み取ることができます。2 番目の例では、変換の結果は次のようになります。

array(2){
	[0]=>array(1){			["name"]=>String("lala")			}	[1]=>array(0){}
	}
<br>

このとき、$user["name"]を使用するとエラーが発生するため、「lala」の文字列を読み取るには$user[0]["name"]を使用する必要があります

関連推奨事項:

Dang コントローラーメソッドの戻り値は単純な型です。 json を操作するにはどうすればよいですか? <br>

jQueryとPHPの間のJSONインタラクション、二次元配列を避ける方法

phpとhtmlの間の簡単なjsonインタラクションの例

以上がPHP バックエンドは Android との JSON インタラクションを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。