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

21
demandé sur Curtis Crewe 2013-03-22 02:55:06

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.

45
répondu Jon 2013-03-21 22:57:49

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.

:)

6
répondu Chad 2016-03-05 04:57:07

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"}]}

2
répondu Dards 2017-03-22 08:52:33