Maison >développement back-end >tutoriel php >Le backend PHP implémente l'interaction JSON avec Android
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( 'user_id' => $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 :
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!