2014-12-30 4 views
1

Мне нужно разобрать определенные поля из Shopify Webhook, который был экспортирован в JSON в CSV-файл. Одно из полей, на которые мне нужно указать адрес доставки, как выбрать «shipping_address» ==> «address1»: «123 Shipping Street»?Parsing Shopify JSON Webhook для CSV

{ 
"created_at":"2014-12-30T11:58:01-05:00", 
"email":"[email protected]", 
"name":"#9999", 
"subtotal_price":"229.94", 
"taxes_included":false, 
"order_number":1234, 
"billing_address":{ 
    "address1":"123 Billing Street", 
    "address2":null, 
    "city":"Billtown", 
    "company":"My Company", 
    "country":"United States", 
    "first_name":"Bob", 
    "last_name":"Biller", 
    "latitude":null, 
    "longitude":null, 
    "phone":"555-555-BILL", 
    "province":"Kentucky", 
    "zip":"K2P0B0", 
    "name":"Bob Biller", 
    "country_code":"US", 
    "province_code":"KY" 
    }, 
"shipping_address":{ 
    "address1":"123 Shipping Street",<!-- NEED THIS ADDRESS --> 
    "address2":null, 
    "city":"Shippington", 
    "company":"Shipping Company", 
    "country":"United States", 
    "first_name":"Steve", 
    "last_name":"Shipper", 
    "latitude":null, 
    "longitude":null, 
    "phone":"555-555-SHIP", 
    "province":"Kentucky", 
    "zip":"K2P0S0", 
    "name":"Steve Shipper", 
    "country_code":"US", 
    "province_code":"KY" 
}, 
"customer":{ 
    "accepts_marketing":false, 
    "created_at":null, 
    "email":"[email protected]", 
    "first_name":"John", 
    "id":null, 
    "last_name":"Smith", 
    "last_order_id":null, 
    "multipass_identifier":null, 
    "note":null, 
    "orders_count":0, 
    "state":"disabled", 
    "total_spent":"0.00", 
    "updated_at":null, 
    "verified_email":true, 
    "tags":"", 
    "last_order_name":null, 
    "default_address":{ 
     "address1":"123 Elm St.", 
     "address2":null, 
     "city":"Ottawa", 
     "company":null, 
     "country":"Canada", 
     "first_name":null, 
     "id":null, 
     "last_name":null, 
     "phone":"123-123-1234", 
     "province":"Ontario", 
     "zip":"K2H7A8", 
     "name":"", 
     "province_code":"ON", 
     "country_code":"CA", 
     "country_name":"Canada", 
     "default":true 
    } 
} 

ответ

0

Использование анализатора JSON, конечно же. Самый очевидный ответ - это всегда тот, с которым я иду. Поскольку JSON можно напрямую интерпретировать с помощью Javascript, ваш язык сценариев выбора может быть Javascript для этого! Если вы не можете по какой-то причине написать свой код сценария в Javascript, почти все другие языки сценариев, которые вы знаете, приходят с инструкцией по разбору JSON. В Ruby, например, вы просто сделать

data = JSON.parse someJSON 

и теперь вы можете играть с данных. Не сообщая миру свой выбор языка сценариев в вашем вопросе, или вы находитесь в мире клиентов или серверов, вам почти невозможно помочь вам больше. К счастью для вас, JSON - это просто текст, как ваш CSV-файл. Поэтому ничто не мешает вам разобрать ваш JSON с помощью парсера JSON или просто старого Javascript.

+0

Я в мире клиента, пытаясь разобрать конкретные поля из массы информации, которую они предоставляют, поэтому я могу сделать CSV для отправки на склад и одновременно отправить электронное письмо с той же информацией, отформатированной для отправки продавцу. Поэтому я думаю, что сочетание javascript и PHP будет лучшим методом. Поэтому, когда новый заказ создается веб-ходом, он форматируется через PHP, а затем отправляется как csv и e-mail. Верно @ Дэвид Лазар? – Newcombe

+0

Вы вообще не находитесь в мире клиентов. Работа с Webhooks означает, что вы находитесь в мире серверов. Поэтому напишите свое приложение, чтобы послушать Webook, который вы хотите. Вы получаете врученный JSON. Разберите его и сделайте все, что вам нужно. PHP может анализировать JSON, создавать CSV-файлы и отправлять электронные письма, чтобы вы закончили. Нет необходимости в Javascript вообще. –

+0

Хорошо, во-первых, это то, что я использую, чтобы поймать webhook, ' ' Это лучший способ сделать это. Во-вторых, я очень новичок в JSON, и как лучше всего разобрать его? Я вижу ваш ответ, но я не уверен, как его реализовать. – Newcombe

1

это способ получить JSON данных из webhook:

class Data{ 
    private $arrayOrder = array(); 
    public function __construct(){ 
     $this->process(); 
    } 

    private function process(){ 
     $order = $this->getContents(); 
     if(!$order){ 
      error_log('something failed'); 
      exit(); 
     } 
     $this->arrayOrder = array(
      'email'=>$order->email, 
      'billing_address_address1'=>$order->billing_address->address1, 
      'shipping_address_address1'=>$order->shipping_address->address1, 
      'customer'=>array(
       'first_name'=>$order->customer->first_name, 
       'default_address'=>$order->customer->default_address->address1 
      ) 
     ); 
     error_log(json_encode($this->arrayOrder));//to test 
    } 

    private function getContents(){ 
     $webhookContent = ""; 
     $webhookContent = file_get_contents("php://input"); 
     if($webhookContent){ 
      $data = json_decode($webhookContent); 
      return $data; 
     } 
     return false; 
    } 
} 
$csv = new Data(); 

создать CSV-файл, используйте ручной пример поставить CSV: http://php.net/manual/en/function.fputcsv.php

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