When trying to access an API the JSON array must be parsed like this
{"item":[{"id":"123456", "name":"adam"}]}
But when i’m doing the following code
$data = array("item" => array("id" => "123456", "name" => "adam")); echo json_encode($data);
it returns the json array without squared brackets as follows
{"item":{"id":"123456","name":"adam"}}
I’ve spent hours trying to figure out how to fix this and just can’t think of a solution
Advertisement
Answer
You need to wrap things in another array
:
$data = array("item" => array(array("id" => "123456", "name" => "adam")));
This will be more understandable if we use the equivalent PHP 5.4 array syntax:
$data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ];
Compare this with the JSON:
{ "item": [ {"id":"123456", "name":"adam" } ] }
The only thing to explain is why one of the PHP arrays remains an array []
in JSON while the other two get converted to an object {}
. But the documentation already does so:
When encoding an array, if the keys are not a continuous numeric sequence starting from 0, all keys are encoded as strings, and specified explicitly for each key-value pair.