2017-02-02 9 views
0

以下のコードは、line_itemsをJSON配列としてレンダリングしていないため、私は役に立たないように検索しました。APIに接続する際のPHP/JSON配列の問題

誰も私にここで手を差し伸べることはできますか?

また、$ orderShippingInfo変数のjson_encodeデータも含まれています。

{ 
"token":"API_KEY_HERE", 
"email":"[email protected]", 
"line_items":{ 
    "sku":"12345", 
    "name":"Product Name", 
    "title":"Product Title", 
    "price":"$1.99", 
    "quantity":"1", 
    "total_tax":"$0.00" 
    }, 
"shipping_lines":{ 
    "title":"UPS", 
    "price":"$0.00", 
    "method":"UPS 3 DAY", 
    "carrier":"UPS" 
    }, 
"order_id":"0001", 
"profile":"default", 
"shipping_address":{ 
    "province":"AZ", 
    "city":"Testville", 
    "first_name":"Augusto", 
    "last_name":"Pinochet", 
    "zip":"12341", 
    "province_code":"NY", 
    "country":"US", 
    "company":"Company Name, Inc.", 
    "phone":"1112223333", 
    "country_code":"US", 
    "address1":"123 Testing Dr Street", 
    "address2":"Suite #1" 
    }, 
"subtotal_price":"$0.00", 
"created_at":"2017-02-02", 
"country_code":"US", 
"total_discounts":"$0.00", 
"total_price":"$0.00" 
} 

TIA:

以下はJSON出力であります!

<?php 

$orderShippingInfo = array(
    'token' => 'API_KEY_HERE', 
    'email' => '[email protected]', 
    'line_items' => array(
     'sku'=>'12345', 
     'name'=>'Product Name', 
     'title'=>'Product Title', 
     'price'=> '$1.99', 
     'quantity' => '1', 
     'total_tax' => '$0.00', 
    ), 
    'shipping_lines' => array(
     'title' => 'UPS', 
     'price' => '$0.00', 
     'method' => 'UPS 3 DAY', 
     'carrier' => 'UPS', 
    ), 
    'order_id' => '0001', 
    'profile' => 'default', 
    'shipping_address' => array(
     'province' => 'AZ', 
     'city' => 'Testville', 
     'first_name' => 'Augusto', 
     'last_name' => 'Pinochet', 
     'zip' => '12341', 
     'province_code' => 'NY', 
     'country' => 'US', 
     'company' => 'Company Name, Inc.', 
     'phone' => '1112223333', 
     'country_code' => 'US', 
     'address1' => '123 Testing Dr Street', 
     'address2' => 'Suite #1', 
    ), 
    'subtotal_price' => '$0.00', 
    'created_at' => date('Y-m-d'), 
    'country_code' => 'US', 
    'total_discounts' => '$0.00', 
    'total_price' => '$0.00', 
); 

echo json_encode($orderShippingInfo); 

?> 
+0

'$ orderShippingInfo = json_decode(真の$ JSON、);' – Mohammad

+0

@Mohammad彼はとてもあなたがline_itemsが配列ではなく、JSON文字列のままにしたいPHPの配列 – RiggsFolly

+0

をコードしていますか? – Pitt

答えて

2

広告申込情報の配列を配列にする必要があります。例えば

:あなたが必要な場合

$orderShippingInfo = array(
'token' => 'API_KEY_HERE', 
'email' => '[email protected]', 
'line_items' => array(
    array(
     'sku'=>'12345', 
     'name'=>'Product Name', 
     'title'=>'Product Title', 
     'price'=> '$1.99', 
     'quantity' => '1', 
     'total_tax' => '$0.00', 
    ) 
), 
'shipping_lines' => array(
    'title' => 'UPS', 
    'price' => '$0.00', 
    'method' => 'UPS 3 DAY', 
    'carrier' => 'UPS', 
), 
'order_id' => '0001', 
'profile' => 'default', 
'shipping_address' => array(
    'province' => 'AZ', 
    'city' => 'Testville', 
    'first_name' => 'Augusto', 
    'last_name' => 'Pinochet', 
    'zip' => '12341', 
    'province_code' => 'NY', 
    'country' => 'US', 
    'company' => 'Company Name, Inc.', 
    'phone' => '1112223333', 
    'country_code' => 'US', 
    'address1' => '123 Testing Dr Street', 
    'address2' => 'Suite #1', 
), 
'subtotal_price' => '$0.00', 
'created_at' => date('Y-m-d'), 
'country_code' => 'US', 
'total_discounts' => '$0.00', 
'total_price' => '$0.00', 
); 

その後、アレイに二行目の項目を追加することができます。

+0

'shipping_lines'でも同じことが当てはまります – Andy

1

これは、javacriptには連想配列の概念がないため、json_encode()のうちの1つを生成するとjavascriptが破損するためです。

PHPの配列は数値添字の場合はPHPの配列は連想配列である場合、それはJSONオブジェクト

が作成されます、あなたはJSONの配列を取得

json_encodeは

$xx = ['a','b']; 

$yy = ['one'=> 1, 'two'=>2]; 

print_r($xx); 
echo json_encode($xx).PHP_EOL; 
print_r($yy); 
echo json_encode($yy); 


Array 
(
    [0] => a 
    [1] => b 
) 
["a","b"] // note this is a JSON array 
Array 
(
    [one] => 1 
    [two] => 2 
) 
{"one":1,"two":2} // note this is a JSON object 

を何をするかのこの例を参照してください。

何らかの理由でJSON文字列表現を配列にする場合は、[]$orderShippingInfo[] = array(に追加してください。

$orderShippingInfo[] = array(
'token' => 'API_KEY_HERE', 
'email' => '[email protected]', 
'line_items' => array(
    'sku'=>'12345', 
    'name'=>'Product Name', 
    'title'=>'Product Title', 
    'price'=> '$1.99', 
. . . 
. . . 
+0

これは正しいです。 JavaScriptは連想配列を持たないため、データをオブジェクトに変換する必要があります。 – databyss

+0

明確化のおかげで、私は理由を忘れてしまった。 – RiggsFolly

関連する問題