2017-05-24 7 views
0

私はAPIにデータを送信しています。これは、このような形式を望んでいる:JSONエンコードオブジェクトの作成

{ 
    "subscribers": [{ 
    "email": "[email protected]", 
    "time_zone": "America/Los_Angeles", 
    "custom_fields": { 
     "name": "John Doe" 
    } 
    }] 
} 

私はこのようにPHPでJSONオブジェクトを構築しています:

$subscriberInfo = [ 
    'subscribers' => [ 
     ['email' => $email], 
     ['custom_fields'] => [ 
      ['name' => "Bob"] 
     ] 
    ] 
]; 
$encoded = json_encode($subscriberInfo); 

APIは['custom_fields']を拒否されます。

私は間違っていますか?

+0

は、APIは、正確なフォーマットを必要としていますか?もしそうなら、配列の 'time_zone'部分がありません。さらに詳しい情報については、APIの開発者にお尋ねしたいかもしれません。 –

+0

タイムゾーンは任意です –

+0

彼らのサポートはうんざりです。私は他の答えのために2日間待っていた –

答えて

2

正しい配列形式。間違った配列形式を使用しています。

Try this snippet here

$subscriberInfo = array(
    'subscribers' => array(
     array(
      'email' => "s", 
      'custom_fields'=> 
      array('name' => "Bob") 
     ) 
    ) 
); 
+0

それは、ありがとう! –

+0

@PaulDessertようこそ.. :) –

0

APIは「メール」フィールドも拒否する必要があります。

$subscriberInfo = [ 
    'subscribers' => [ 
     [ 
      'email' => $email, 
      'custom_fields' => [ 
       'name' => "Bob" 
      ] 
     ] 
    ] 
]; 

$encoded = json_encode($subscriberInfo); 
+0

いいえ、それはメールのフィールドを受け入れていた –

0

あなたのオフセットは、単に間違っています。

"subscribers":[{"email":""},{"custom_fields":{"name":"Bob"}}]} 
1

live demo

を確認し、これを試してみてください:

$subscriberInfo = [ 
    'subscribers' => [ 
     ['email' => $email], 
     ['custom_fields' => 
      ['name' => "Bob"] 
     ] 
    ] 
]; 
$encoded = json_encode($subscriberInfo); 

...リターン:あなたは 'custom_field' の後、あなたのオブジェクトの4行目の "[" を持つべきではありません

$subscriberInfo = [ 
    'subscribers' => [[ 
     'email' => $email, 
     'custom_fields' => 
      ['name' => "Bob"] 
     ] 
    ] 
]; 
1

出力:あなたが投稿として

{ 
    "subscribers":[ 
     { 
     "email":"s", 
     "custom_fields":{ 
      "name":"Bob" 
     } 
     } 
    ] 
}