Maison >développement back-end >tutoriel php >Le backend PHP implémente l'interaction JSON avec Android

Le backend PHP implémente l'interaction JSON avec Android

小云云
小云云original
2018-02-26 13:20:581951parcourir

Certains amis autour de moi ont dit que lorsqu'ils utilisaient le code de ce blog, ils signaleraient une erreur dans le code suivant, et il y avait une erreur indiquant que builder.toString() ne pouvait pas être converti en objet json. <br>

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

<br>Et je n'ai rien trouvé de mal quand je l'ai essayé moi-même. J'ai donc fait quelques vérifications sur le code du serveur php construit par mes amis, et j'ai finalement trouvé le problème . J'ai donc écrit ceci, dans l'espoir d'aider la majorité des étudiants qui sont tombés dans le même gouffre

Cela implique la fonction json_decode de php, c'est la raison pour laquelle mes amis ont fait des erreurs.

Écrivez maintenant le code que j'ai testé avec succès. Ce que j'ai envoyé au serveur php sur Android est un jsonObject, {"name": "lala"}, et le nom de l'entité correspondant. est " userJson ", qui est le code suivant

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

À l'heure actuelle, mon code côté serveur est

<?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);  
?>

Pour le moment, il n'y aura aucune erreur qui ne puisse pas être convertie en JSONObject dans Android. Bien sûr, je peux également envoyer JSONArray au serveur côté serveur. C'est-à-dire [{"name":"lalala"},{}]

Dans ce cas, le code PHP ci-dessus ne peut pas être exécuté correctement jusqu'à la dernière phrase. besoin Le code est modifié en

<?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);  
?>

Pourquoi est-il modifié comme ça ? La raison est en fait très simple. Lorsque nous ajoutons true à la fonction json_decode, le $json_string reçu sera converti en un tableau associatif. Par exemple, dans le premier exemple, jsonObject sera converti en

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

, vous pourrez donc utiliser $user["name"] pour lire la chaîne "test", et dans l'exemple Le résultat de la deuxième transformation est

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

À ce moment, une erreur se produira si vous utilisez $user["name"], et vous devez utiliser $user[0]["name "] peut lire la chaîne de "lala"

Recommandations associées :

Lorsque la valeur de retour du contrôleur La méthode est un type simple, comment communiquer avec json Interaction ? <br>

Interaction JSON entre jQuery et PHP, comment éviter les tableaux bidimensionnels

Exemple d'interaction json simple entre php et html

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn