квадратная скобка json array

При попытке доступа к API массив JSON должен быть проанализирован следующим образом:

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

Но когда я делаю следующий код

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

он возвращает массив json без квадратных скобок следующим образом

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

Я потратил часы, пытаясь понять, как это исправить, и просто не могу придумать решение

Вам нужно обернуть вещи в другой array :

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

Это будет более понятным, если мы будем использовать эквивалентный синтаксис массива PHP 5.4:

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

Сравните это с JSON:

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

Единственное, что нужно объяснить, – это то, почему один из массивов PHP остается массивом [] в JSON, а остальные два преобразуются в объект {} . Но документация уже делает это:

При кодировании массива, если ключи не являются непрерывной числовой последовательностью, начиная с 0, все ключи кодируются как строки и явно указываются для каждой пары ключей и значений.

Прежде чем читать этот пост, у меня было следующее:

echo json_encode($data);

После прочтения этого сообщения:

 echo json_encode(array($data)); 

Появились скобки в начале и конце объекта JSON.

🙂

Это становится удобно при использовании этого способа, поэтому вы можете добавить больше элементов в массив

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

И это будет ниже:

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