sin corchete cuadrado json array

Al intentar acceder a una API, la matriz JSON se debe analizar de esta manera

{"item":[{"id":"123456", "name":"adam"}]} 

Pero cuando estoy haciendo el siguiente código

 $data = array("item" => array("id" => "123456", "name" => "adam")); echo json_encode($data); 

devuelve la matriz json sin corchetes cuadrados de la siguiente manera

 {"item":{"id":"123456","name":"adam"}} 

He pasado horas tratando de descubrir cómo solucionar esto y simplemente no puedo pensar en una solución

Necesita envolver las cosas en otra array :

 $data = array("item" => array(array("id" => "123456", "name" => "adam"))); 

Esto será más comprensible si usamos la syntax de matriz PHP 5.4 equivalente:

 $data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ]; 

Compare esto con el JSON:

  { "item": [ {"id":"123456", "name":"adam" } ] } 

Lo único que hay que explicar es por qué una de las matrices de PHP sigue siendo una matriz [] en JSON mientras que las otras dos se convierten a un objeto {} . Pero la documentación ya lo hace:

Al codificar una matriz, si las claves no son una secuencia numérica continua que comienza desde 0, todas las claves se codifican como cadenas y se especifican explícitamente para cada par clave-valor.

Antes de leer esta publicación, tuve esto:

echo json_encode($data);

Después de leer esta publicación:

 echo json_encode(array($data)); 

Aparecieron corchetes al principio y al final del objeto JSON.

🙂

Se vuelve útil cuando se utiliza de esta manera, por lo que puede agregar más elementos en la matriz

 $val = array(); $val["id"]="123456"; $val["name"]="adam"; $data = array(); $data["item"][]=$val; echo json_encode($data); 

Y saldrá a continuación:

{“elemento”: [{“id”: “123456”, “nombre”: “adam”}]}