【问题标题】:What is the correct way to send key value pair in JSON in PHP在 PHP 中以 JSON 格式发送键值对的正确方法是什么
【发布时间】:2015-07-22 05:24:47
【问题描述】:

我正在尝试在 PHP 中进行 POST。在文档中,他们提到了如下格式。

{
"EmailAddress": "john.smith@acmeconsulting.co",
"ActivityEvent": 112,
"ActivityNote": "Note for the activity",
"ActivityDateTime": "yyyy-mm-dd hh:mm:ss",
"FirstName": "John",
"LastName" : "Smith",
"Phone" : "+919845098450",
"Score": 10
}

我是 PHP 新手。我尝试了以下方法来创建键值对。下面发布的示例都没有在服务器上进行 POST [我在服务器上找不到我的 POST 更新,即leadsquared cloud]。

我的样本数据。我在此处提到的示例中使用了以下示例数据。

$firstName='Test5';
$activityEvent=201;
$emailAddress='test10@test.com';
$activityNote='Note note note';
$phone='9551653808';
$date='2015-07-21 12:48:10';

示例 1:`

  $data_string = '[
        {"ActivityEvent": "'.$activityEvent.'"},
        {"EmailAddress": "'.$emailAddress.'"},
        {"ActivityNote": "'.$activityNote.'"},
        {"Phone": "'.$phone.'"},
        {"ActivityDateTime","'.$date.'"}
      ]';

示例 2:

      $data_string['ActivityEvent']=$activityEvent;
      $data_string['EmailAddress']=$emailAddress;
      $data_string['ActivityNote']=$activityNote;
      $data_string['Phone']=$phone;
      $data_string['ActivityDateTime']=$date;

示例 3:

          $datastring = array(
          'ActivityEvent' => $activityEvent,
          'EmailAddress' => $emailAddress,
          'ActivityNote' => $activityNote,
          'Phone' => $phone,
          'ActivityDateTime' => $date);

一旦示例正确,我会将数据字符串发布到以下代码中。

try
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                      'Content-Type:application/json',
                      'Content-Length:'.strlen($data_string)
                      ));
$json_response = curl_exec($curl);
curl_close($curl);
} catch (Exception $ex) {
 curl_close($curl);
}

【问题讨论】:

    标签: php json post


    【解决方案1】:

    由于您使用的是“Content-Type:application/json”,因此您需要提供 json 数组而不是 php 数组,所以 首先通过

    得到一个php格式的数组
    $datastring=
    array(
    "EmailAddress"=> "john.smith@acmeconsulting.co",
    "ActivityEvent"=> 112,
    "ActivityNote"=> "Note for the activity",
    "ActivityDateTime"=> "yyyy-mm-dd hh:mm:ss",
    "FirstName"=> "John",
    "LastName" => "Smith",
    "Phone" => "+919845098450",
    "Score"=> 10
    );
    

    然后使用php json编码函数作为

    $value=json_encode($datastring)
    echo $value;
    $value will be your json encoded array
    {
    "EmailAddress":"john.smith@acmeconsulting.co",
    "ActivityEvent":112,
    "ActivityNote":"Note for the activity","ActivityDateTime":"yyyy-mm-dd hh:mm:ss",
    "FirstName":"John",
    "LastName":"Smith",
    "Phone":"+919845098450",
    "Score":10
    }
    

    将代码中的 $datastring 替换为 $value 为

    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
                          'Content-Type:application/json',
                          'Content-Length:'.strlen($value)
                          ));
    

    【讨论】:

      【解决方案2】:

      使用

      $datastring = array(
        'ActivityEvent' => $activityEvent,
        'EmailAddress' => $emailAddress,
        'ActivityNote' => $activityNote,
        'Phone' => $phone,
        'ActivityDateTime' => $date
      );
      json_encode($datastring);
      

      参考this链接。

      你只需要改变

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
      

        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data_string));
      

      【讨论】:

      • 我试过这个。这也不会在服务器上执行 POST。
      猜你喜欢
      • 2015-01-06
      • 1970-01-01
      • 2020-06-07
      • 2013-10-26
      • 2019-10-09
      • 2017-06-05
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      相关资源
      最近更新 更多