2016-03-03 2 views
1

Как я могу создать этот вывод JSON с помощью PHP?Создать этот вывод JSON в PHP?

{ 
    "external_ref": "12345", 
    "sale_datetime": "2016-03-01 22:09:00", 
    "customer_name": "Foo Bar", 
    "shipping_address_1": "123 Test Street", 
    "shipping_address_2": "", 
    "shipping_address_3": "City", 
    "shipping_address_4": "County", 
    "shipping_postcode": "AB12 3AB", 
    "shipping_country": "England", 
    "shipping_country_code": "GB", 
    "shipping_method": "STANDARD", 
    "phone": "", 
    "items": [ 
    { 
     "external_ref": "12345", 
     "style": "mens", 
     "size": "Medium", 
     "color": "White", 
     "print_location": "front", 
     "print_x_offset": "0", 
     "print_y_offset": "0", 
     "quantity": 1, 
     "external_url": "url.png", 
     "external_thumbnail_url": "url.jpg" 
    } 
    ] 
} 

Я пробовал это сам (ниже), но он не в состоянии представить API я посылающего его:

//Initiate cURL. 
$ch = curl_init($url); 

$item = array(
    array(
    "external_ref" => 12345, 
    "style" => "mens", 
    "size" => "Medium", 
    "color" => "White", 
    "print_location" => "FRONT", 
    "print_x_offset" => "0", 
    "print_y_offset" => "0", 
    "quantity" => 1, 
    "external_url" => "url.png", 
    "external_thumbnail_url" => "url.jpg" 
) 
); 

//The JSON data. 
$jsonData = array(
    "external_ref"=> 12345, 
    "sale_datetime" => "2016-03-01 22:09:00", 
    "customer_name" => "Foo Bar", 
    "shipping_address_1" => "123 Test Street", 
    "shipping_address_2" => "", 
    "shipping_address_3" => "City", 
    "shipping_address_4" => "County", 
    "shipping_postcode" => "AB12 3AB", 
    "shipping_country" => 'England', 
    "shipping_country_code" => "GB", 
    "shipping_method" => "STANDARD", 
    "phone" => "", 
    "items" => $item 
); 

//Encode the array into JSON. 
$jsonDataEncoded = json_encode($jsonData); 

//Tell cURL that we want to send a POST request. 
curl_setopt($ch, CURLOPT_POST, 1); 

//Attach our encoded JSON string to the POST fields. 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded); 

//Set the content type to application/json 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

//Execute the request 
$result = curl_exec($ch); 

Я пропускаю что-то важное здесь? Первый бит кода JSON, который находится в верхней части этого вопроса, отправляется правильно. Когда я пытаюсь воспроизвести этот JSON с этим PHP, он не отправляется.

+0

Что представляет собой JSON, который вы представляете? – Sammitch

+0

console.log ($ jsonDataEncoded) и сравните его с желаемым результатом. –

+0

https://3v4l.org/ugIje подтверждают, что это дает точно такой же json, как и тот, который вы опубликовали. Какая ошибка вы получаете, между прочим? – IROEGBU

ответ

2

я запускаю свой код и получить:

{ 
    "external_ref": 12345, 
    "sale_datetime": "2016-03-01 22:09:00", 
    "customer_name": "Foo Bar", 
    "shipping_address_1": "123 Test Street", 
    "shipping_address_2": "", 
    "shipping_address_3": "City", 
    "shipping_address_4": "County", 
    "shipping_postcode": "AB12 3AB", 
    "shipping_country": "England", 
    "shipping_country_code": "GB", 
    "shipping_method": "STANDARD", 
    "phone": "", 
    "items": [ 
    { 
     "external_ref": 12345, 
     "style": "mens", 
     "size": "Medium", 
     "color": "White", 
     "print_location": "FRONT", 
     "print_x_offset": "0", 
     "print_y_offset": "0", 
     "quantity": 1, 
     "external_url": "url.png", 
     "external_thumbnail_url": "url.jpg" 
    } 
    ] 
} 

разницу в формате sale_datetime:

  • 01 Mar 2016 22:09:00 - ваш желаемый формат
  • 2016-03-01 22 : 09: 00 - php-выход в этом от

и external_ref становятся целыми, а не строковыми

+0

Даже «print_location» в подэлементе «items» отличается в CASE –

+0

Да, вы правы :), но автор явно говорит «print_location» => «FRONT» в своем коде –

+0

Я сделал все случаи, такие как «front» correct with их код сейчас, но я все равно получаю ту же ошибку. Is 'Ресурс, который вы ищете, был удален, если его имя было изменено или временно недоступно? Общая ошибка PHP/cURL? Я никогда не видел его раньше, и у них их тоже нет. –

0

Оказалось, что мой URL-адрес, на который был отправлен запрос, отсутствовал '?' где я добавлял «токен =». К сожалению!

Смежные вопросы