Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Backend implementiert JSON-Interaktion mit Android

PHP-Backend implementiert JSON-Interaktion mit Android

小云云
小云云Original
2018-02-26 13:20:581866Durchsuche

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(  
        &#39;user_id&#39; => $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:

Wenn der Rückgabewert des Controllers Methode ist ein einfacher Typ. Wie kommuniziert man mit JSON Interaction? <br>

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn