Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Backend implementiert JSON-Interaktion mit Android
Einige Freunde um mich herum sagten, dass sie bei der Verwendung des Codes in diesem Blog einen Fehler im folgenden Code melden würden und dass builder.toString() nicht in ein JSON-Objekt konvertiert werden könne. <br>
JSONObject jsonObject = new JSONObject(builder.toString());
<br>Und als ich es selbst ausprobiert habe, habe ich nichts Falsches festgestellt. Also habe ich den von meinen Freunden erstellten PHP-Servercode überprüft und schließlich das Problem gefunden . Also habe ich das aufgeschrieben, in der Hoffnung, der Mehrheit der Studenten zu helfen, die in die gleiche Situation geraten sind
Dabei geht es um die json_decode-Funktion von PHP, was der Grund ist, warum meine Freunde Fehler gemacht haben.
Schreiben Sie nun den Code, den ich erfolgreich getestet habe. Was ich an den PHP-Server auf Android gesendet habe, ist ein jsonObject, {"name": "lala"} und der entsprechende Entitätsname ist „userJson“, also der folgende Code
JSONObject jo = new JSONObject();
jo.put("name", "test");
params.add(new BasicNameValuePair("userJson",jo.toString() ));
Zu diesem Zeitpunkt lautet mein serverseitiger Code
<?php $json_string = $_POST ["userJson"]; $user = json_decode($json_string,true);//这里的true加上就会将android发来的json字符串转化为关联数组
$arr = array( 'user_id' => $user["name"] ); $str = json_encode($arr); echo($str); ?>
Zu diesem Zeitpunkt tritt kein Fehler auf, der nicht in JSONObject in Android konvertiert werden kann. Natürlich kann ich JSONArray auch serverseitig an den Server senden. Das ist [{"name": "lalala"},{}]
In diesem Fall kann der obige PHP-Code derzeit nicht bis zum letzten Satz korrekt ausgeführt werden müssen Der Code wird geändert zu
<?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); ?>
Warum wird er so geändert? Der Grund ist eigentlich ganz einfach. Wenn wir der Funktion json_decode true hinzufügen, wird der empfangene $json_string in ein assoziatives Array konvertiert. Im ersten Beispiel wird jsonObject beispielsweise in
array(1){ ["name"]=>String("test") }
konvertiert, sodass Sie $user["name"] verwenden können, um die Zeichenfolge „test“ und in zu lesen Das Beispiel Das Ergebnis der zweiten Transformation ist
array(2){ [0]=>array(1){ ["name"]=>String("lala") } [1]=>array(0){} }
<br>
Zu diesem Zeitpunkt tritt ein Fehler auf, wenn Sie $user["name"] verwenden, und Sie müssen dies tun Verwenden Sie $user[0]["name"], um die Zeichenfolge von "lala" zu lesen
Verwandte Empfehlungen:
JSON-Interaktion zwischen jQuery und PHP, wie man zweidimensionale Arrays vermeidet
Einfaches JSON-Interaktionsbeispiel zwischen PHP und HTML
Das obige ist der detaillierte Inhalt vonPHP-Backend implementiert JSON-Interaktion mit Android. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!