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.
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!