Как отправить данные в виде JSON в следующем формате

Мне нужно отправить данные POST в следующем формате.

{
  "buys": [
    {
      "productId": "1ae9ac1a37934fde92d7545cd6c93c13",
      "amount": 200.00
    }
  ]
}

В настоящее время мой PHP-скрипт, которому подчиняется форма, есть.

<?php
$productId = $_POST['productId'];
$amount = $_POST['amount'];
$type = $_POST['name'];

//API Url
$url = 'https://********.com/post_test.php';

//Initiate cURL.
$ch = curl_init($url);

//The JSON data.
$jsonData = array(
    'type' => $type,
    'productId' => $productId,
    'amount' => $amount
);

//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);

//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);

//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);

//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

//Execute the request
$result = curl_exec($ch);

?>

Это вывод после отправки в форму на внешнем интерфейсе, что неверно. Я думал, что он перенаправит на введенный URL-адрес, но я предполагаю, что это не предназначено, и он только публикует? (когда я набрал это, я задался вопросом, является ли вывод, который я вижу, с веб-страницы, на которую я ссылаюсь в верхней части скрипта, поскольку эта страница просто повторяет JSON в виде строки).

{"type":"buys","productId":"2ed913357e8842e9a38f0a16eb9703a9","amount":"45866"}

Я действительно понятия не имею, что делать дальше или что искать в Google, чтобы найти учебник.

Еще немного деталей, у меня есть форма, которая отправляет PHP-скрипт выше. Переменная $name — это «покупки» в запрошенном формате, остальные переменные говорят сами за себя.

Я уверен, что мне просто нужно отформатировать JSON, используя мои переменные, но я понятия не имею, с чего начать.

print_r(json_decode(Your_json_string, true)); покажет вам нужный массив
splash58 06.02.2019 11:38
sandbox.onlinephpfunctions.com
splash58 06.02.2019 11:40
Стоит ли изучать 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
2
149
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

ваши данные json должны быть такими

$jsonData = array(
    $type => array(
       'productId' => $productId,
       'amount' => $amount
    )
);

вывод :

{"busy":{"productId":"1ae9ac1a37934fde92d7545cd6c93c13","amount":"200.00"}}

Итак, вы хотите, чтобы покупки были массивом:

//The JSON data.
$jsonData = array(
    $type =>
    array(
        'productId' => $productId,
        'amount' => $amount
    )
);

Выход будет {"bugs":{"productId":"productId","amount":"amount"}}

Спасибо, так много смысла теперь, когда мне показали. Учимся каждый день

Carl Piper 06.02.2019 12:07
Ответ принят как подходящий

Измените свой $jsonData:

$jsonData = array(
    'type' => $type,
    'productId' => $productId,
    'amount' => $amount
);

Следующее:

$jsonData = array();
$jsonData[ $type ] = array();
$jsonData[ $type ][] = array(
    'productId' => $productId,
    'amount' => $amount
);

Спасибо, я изначально поторопился с ответом, который я пометил как правильный. Это то, что мне нужно, так как у него есть []

Carl Piper 06.02.2019 12:58

Вы можете попробовать это

   $jsonData['buys'][] = array(
         'productId' => $productId,
        'amount' => $amount
    );

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