如何通过php正确地将数据发送到json


How to correctly send data to json via php?

我正在使用Mailchimp API,并试图将用户名从表单传递到列表。

Mailchimp有一个嵌套的实际用户名结构,我不知道如何正确地为它编写代码

JSON数据结构如下所示:

{
"email_address": xxx@xxx.com
"merge_fields": {
"FNAME":
"LNAME":
  }
}

使用带有post方法的函数发送post请求脚本

$result = $MailChimp->post("lists/$mailchimp_list_id/members", [
                    'email_address' => $subscriber_email,
                    'status'        => 'subscribed',
                  //'merge_fields'['FNAME'] => $subscriber_name; 
            ]);

我尝试发送'merge_fields'['FNAME'] => $subscriber_name;

有人能解释我如何使用PHP进入JSON吗?

像这样尝试

$jsonArray  = json_encode(array('0' =>'test','1' => 'test2')); 

json_encode将把php数组转换为json格式
如果您想将json数组解码为php数组,请使用json_decode

$phpArray = json_decode('Any json encoded array');

好吧,这是在PHP中使用JSON的最佳方式:

  1. 添加此项以获得完整的JSON正文:

     $json = file_get_contents('php://input');
    
  2. 验证json。我与尊重验证器合作。https://github.com/Respect/Validation/blob/master/docs/Json.md

            if(v::json()->validate($json)){
               $whatever = new whatever($json);
            }
    
  3. 使用php类规范化json对象上课随便{公共$email;公共$merged_fields;

        function __construct($json){
            $json = json_decode($json);
            if($json->email){
                $this->email = $json->email     
            }else{
                echo "Error";       
            }
        }
    }
    
  4. 使用jsonSerializable进行编码。这是一个非常好的HowTo:http://www.sitepoint.com/use-jsonserializable-interface/

首先创建一个PHP数据结构以匹配所需的JSON结构,然后json_encode()该结构。

{}在JSON中表示对象[]表示JSON 中的数组

<?php
    $inner = new stdClass();
    $inner->FNAME = $subscriber_first_name;
    $inner->LNAME = $subscriber_last_name;

    $member = new stdClass();
    $member->email_address = 'xxx@xxx.com';
    $member->merge_fields = $inner;
    $json_string = json_encode($member);