pas de tableau JSON à crochets
lorsque vous essayez d'accéder à une API, le tableau JSON doit être interprété comme ceci
{"item":[{"id":"123456", "name":"adam"}]}
Mais quand je fais le code suivant
$data = array("item" => array("id" => "123456", "name" => "adam"));
echo json_encode($data);
il renvoie le tableau json sans crochets comme suit
{"item":{"id":"123456","name":"adam"}}
j'ai passé des heures à essayer de trouver comment réparer ça et je ne peux pas penser à une solution
3 réponses
vous devez envelopper les choses dans un autre array
:
$data = array("item" => array(array("id" => "123456", "name" => "adam")));
ceci sera plus compréhensible si nous utilisons la syntaxe équivalente du tableau PHP 5.4:
$data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ];
comparez ceci avec le JSON:
{ "item": [ {"id":"123456", "name":"adam" } ] }
la seule chose à expliquer est pourquoi un des tableaux PHP reste un tableau []
en JSON tandis que les deux autres se converti en un objet {}
. Mais l' documentation déjà fait:
Lors de l'encodage d'un tableau, si les touches ne sont pas numériques continues séquence à partir de 0, Toutes les clés sont encodées en chaînes, et explicitement spécifié pour chaque paire clé-valeur.
echo json_encode($data);
Après la lecture de ce post:
echo json_encode(array($data));
les parenthèses apparaissent sur le début et la fin de l'objet JSON.
:)
il devient pratique en utilisant cette façon, de sorte que vous pouvez ajouter plus d'éléments sur le tableau
$val = array();
$val["id"]="123456";
$val["name"]="adam";
$data = array();
$data["item"][]=$val;
echo json_encode($data);
Et il sera de sortie ci-dessous:
{"item":[{"id":"123456", "nom":"adam"}]}