如何以以下格式将数据发布为JSON

时间:2019-02-06 10:34:12

标签: php json post

我需要以以下格式发送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,但我不知道从哪里开始。

4 个答案:

答案 0 :(得分:1)

您的json数据应该是这样

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

输出:

  

{“忙碌”:{“ productId”:“ 1ae9ac1a37934fde92d7545cd6c93c13”,“金额”:“ 200.00”}}

答案 1 :(得分:1)

所以您要购买的商品为数组:

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

输出将为{"bugs":{"productId":"productId","amount":"amount"}}

答案 2 :(得分:1)

更改您的$jsonData

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

如下:

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

答案 3 :(得分:1)

您可以尝试

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