2017-01-13 12 views
0

Acuity Scheduling APIを使用しています。カスタムフィールドを投稿するには、配列内にJSONオブジェクトを2つのキー/ペア値idと値。ここでは、このための私の現在のコードは次のとおりです。複数の値を持つJSONオブジェクトをPHPの配列内に作成

$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は存在しません "というメッセージが表示されます。私の必要なのは、私の主な配列がJSONオブジェクトになること、配列になる 'フィールド'、次に個々のIDと値のペアを独自のオブジェクトにすることです(Acuity Scheduling APIから直接取得)。ここで

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

は、この特定のリクエストに応じて参照するために視力のスケジューリングAPIである https://developers.acuityscheduling.com/reference#post-appointments

答えて

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

APIドキュメントでは、JSONとしてエンコードする必要があります。 – Barmar

+0

彼が投稿した例は、JSONオブジェクトがJSONオブジェクト内にネストされていることを示しています。配列の周りでjson_encodeを呼び出すと、jsonオブジェクト内にjsonオブジェクトが作成されます。 – Illuminati

+0

'json_encode()'はオブジェクトではなく文字列を返します。 – Barmar

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()を使用しています。

関連する問題