2016-09-20 40 views
0

我創建了一個演示頁面,通過使用以下代碼將關聯數組轉換爲JSON字符串。如何序列化JSON對象

$test = array("name"=>"test","city"=>"xyz","zipcode"=>"98989"); 
echo json_encode($test); 

我得到以下輸出

{ 
    "name": "test", 
    "city": "xyz", 
    "zipcode": "98989" 
} 

我的期望輸出

"{ 
    \"name\": \"test\", 
    \"city\": \"xyz\", 
    \"zipcode\": \"98989\" 
}" 

因爲我得到錯誤「無法反序列化當前的JSON對象(例如{\ 「name \」:\「value \」}) in shipstation API。怎樣才能達到達到了我的預期產出。

實際代碼

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, FALSE); 

    curl_setopt($ch, CURLOPT_POST, TRUE); 
    $post_fields = array(
        "orderNumber" => "XXXXXXXXXXXXXXXXXX", 
        "orderDate" => "2015-06-29T08:46:27.0000000", 
        "shipByDate" => "2015-07-05T00:00:00.0000000", 
        "orderStatus" => "awaiting_shipment", 
        "billTo" => array("name"=>"ABCD PVT LTD"), 
        "shipTo" => array("name"=>"XYZ PVT LTD Bombay","company"=>"PTR","street1"=>"301,Park Street","city"=>"Sydney","postalCode"=>"20500","country"=>"Australia","residential"=>true), 
        "items" => array(
            array(
             "name"=>"PTR Last order by ABC#9999", 
             "quantity"=>2, 
             "unitPrice"=>99.99, 
             "options"=>array("name"=>"SIZE","value"=>"Large"), 
             "amountPaid"=> 199.98, 
             "paymentMethod"=>"Credit Card", 
             "shipDate"=>"2015-07-02" 
            ) 
            ) 
          ); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($post_fields)); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     "Content-Type: application/json", 
     "Authorization: < Enter your Basic Authorization string here >" 
    )); 
+1

羽絨選民請評論改善我的問題。 – Sadikhasan

+0

API不太可能需要輸出。你應該顯示引發錯誤的代碼。 – JJJ

+0

@Juhana我已經給出了API需要的預期輸出。 – Sadikhasan

回答

2

使用和addslashes()PHP函數

$test = array("name" => "test", "city" => "xyz", "zipcode" => "98989"); 
$data = json_encode($test); 
echo $data = addslashes($data); 
+1

但它返回預期的輸出 –

+0

對不起,我沒有博士ank我的咖啡yep –

+1

@ka_lin:plz使用2杯。 :p – devpro

0

的問題是你使用json_encode()將數組轉換爲字符串,但是,我我很確定你只需要放下json_encode()並將數組直接傳遞給POSTFIELDS參數。

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields); 

此外,在您的原始消息,你有「尊重輸出」和「預期輸出」 - 我認爲這也令人困惑。

我相信你的意思,尊敬的輸出爲需要,和而不是預期的輸出,多數民衆贊成在實際輸出。

+0

我想要 – Sadikhasan

+0

的預期輸出嘗試我所建議的。我會非常驚訝的發現任何API都會期望一個字符串化的JSON對象作爲它的有效載荷。 –

+0

檢查文檔鏈接http://www.shipstation.com/developer-api/#/reference/orders/createupdate-order/create/update-order – Sadikhasan