在PHP中使用数组内的多个值创建JSON对象

时间:2017-01-13 22:40:31

标签: php arrays json api

我正在使用Acuity Scheduling API,为了发布自定义字段,我需要在数组内部有一个JSON对象,它有2个键/对值,id和value。这是我目前的代码:

 $postarray = array (
        'datetime'=>'2017-02-01T14:00:00-0800',         
        'appointmentTypeID'=>'Appt ID',
        'firstName'=>'First Name',
        'lastName'=>'last Name',
        'email'=>'myemail',
        'phone'=>'phone #',
        'fields' => array(
        array('id'=>'1234', 'value'=>'Field Data')
        )
);

$post = json_encode($postarray);

我在'字段中有一个数组'数组,因为我不知道如何在数组中添加一个带有2个值的json对象,然后通过json_encode,因为请求要求在发送之前先将其转换为JSON。

它目前正在给我这个错误:" {" status_code":400," message":"进入表单字段\ u00221234 \ u0022不在这个任命上存在。"在" u0022"之后它增加了我的字段ID。我需要的是我的主数组成为一个JSON对象,'字段'要成为一个数组,然后将各个id和value对作为它们自己的对象,就像这样(直接来自Acuity Scheduling API):

 {
  "datetime": "2016-02-03T14:00:00-0800",
  "appointmentTypeID": 1,
  "firstName": "Bob",
  "lastName": "McTest",
  "email": "bob.mctest@example.com",
  "certificate": "ABC123",
  "fields": [
    {"id": 1, "value": "Party time!"}
  ]
}

以下是Acuity Scheduling API,供此特定请求https://developers.acuityscheduling.com/reference#post-appointments

参考

2 个答案:

答案 0 :(得分:0)

'fields' => array(
     json_encode(array('id'=>'1234', 'value'=>'Field Data'))
)

答案 1 :(得分:0)

ID应该是一个数字,而不是一个字符串,所以不要把它放在引号中。

$postarray = array (
    'datetime'=>'2017-02-01T14:00:00-0800',         
    'appointmentTypeID'=>'Appt ID',
    'firstName'=>'First Name',
    'lastName'=>'last Name',
    'email'=>'myemail',
    'phone'=>'phone #',
    'fields' => array(
        array('id'=> 1234, 'value'=>'Field Data')
    )
);

如果您从脚本参数中获取ID,请使用intval()将其从字符串转换为数字。