Проблема с отправкой строки JSON в API, требующий массив объектов

У меня есть данные на PHP, которые я хочу отправить в API, написанный в формате JSON. Мои данные представляли собой массив PHP, посредством которого я конвертирую в объект JSON, а затем в строку JSON, чтобы я мог отправить. Но для API требуется массив объектов, как показано в приведенном ниже коде, как я могу написать свой код в соответствии с его форматом

Требования из массива, записанного в формате JSON

{
"children":[
    {"child_name":"abc","child_dob":"2015-05-23"},
    {"child_name":"efg","child_dob":"2016-09-13"}
  ]
}

Мой код PHP

//Convert the PHP array to a JSON object
    $child =(object)$children;

    //Convert JSON object to a JSON string to send to server
    $ch = json_encode($child);

    dd($ch);

    //result in browser
   "{"child_name":"mnmbmb","child_dob":"2018-10-30"}"

Покажите, пожалуйста, ваш php-массив $children

Harvey Fletcher 05.11.2018 10:02

«Я конвертирую в объект JSON, а затем в строку JSON» ... это не имеет смысла. JSON - это просто строка. Это декодируемый в объекты и т. д., Но как только вы превратите его в JSON, у вас уже есть строка. Когда вы комментируете //Convert the PHP array to a JSON object, вы фактически все еще превращаете его в объект PHP. Это не JSON, пока вы не закодируете его как строку JSON. Вы можете подумать, что я придираюсь, но это помогает использовать правильную терминологию, тогда все понимают, что вы имеете в виду, и можете быть уверены, что понимаете, что делаете.

ADyson 05.11.2018 10:02

@ADyson Спасибо, примите к сведению

Patweb 05.11.2018 10:23

@HarveyFletcher Это мой детский массив ['child_name' => $childname , 'child_dob' => $childdob]

Patweb 05.11.2018 10:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
140
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет необходимости преобразовывать его в объект. Попробуйте вместо этого

$data=array();
$data['children'] =$children;
//Convert JSON object to a JSON string to send to server
$ch = json_encode($data);

dd($ch);

Привет, я реализовал ваше решение и получаю следующие данные после dd () "{"children":{"child_name":"mnmbmb","child_dob":"2018-10-30"‌​}}". Это все еще вызывает ошибку с API, который ожидает, что свойство children будет содержать массив объектов, как показано ниже в формате "children":[ {"child_name":"abc","child_dob":"2015-05-23"}, {"child_name":"efg","child_dob":"2016-09-13"} ].

Patweb 05.11.2018 11:24

Ваш массив $children, как вы показали выше, содержит только одну строку, но он должен содержать массив значений или строк.

Atal Prateek 05.11.2018 11:28

Я проверил документацию, и она может принимать 1 строку, данные, которые отправляются, представляют собой строку JSON, как мне преобразовать ее обратно в объект JSON, который является форматом, который требует API

Patweb 05.11.2018 13:00

Под массивом значений или строк я имел в виду, что ваш массив $children должен быть 2d-массивом. Например, попробуйте использовать этот массив как $children: array(array('child_name'=>'abc','child_dob'=>'2015-05-23'),a‌​rray('child_name'=>'‌​efg','child_dob'=>'2‌​016-09-13'))

Atal Prateek 05.11.2018 13:19

Другие вопросы по теме