2016-09-20 5 views
0

Ich habe eine Demo-Seite erstellt, um das assoziative Array in eine JSON-Zeichenfolge zu konvertieren, indem Sie den folgenden Code verwenden.So serialisieren Sie ein JSON-Objekt

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

Ich erhalte folgende Ausgabe

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

Meine Erwartete Ausgabe

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

Weil ich bin immer Fehler „Kann nicht mit dem aktuellen JSON-Objekt deserialisieren (zB {\ "Name \": \ "Wert \"}) in Shipstation API. Wie kann man erreichen meine erwartete Leistung.

Actual-Code

$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

Down Voter bitte kommentieren, um meine Frage zu verbessern. – Sadikhasan

+0

Es ist sehr unwahrscheinlich, dass die API diese Ausgabe benötigt. Sie sollten den Code anzeigen, der den Fehler verursacht. – JJJ

+0

@Juhana Ich habe bereits meine erwartete Ausgabe gegeben, die API erfordert. – Sadikhasan

Antwort

2

Verwendung addslashes() PHP-Funktion

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

Aber es gibt die erwartete Ausgabe zurück –

+0

Tut mir leid, ich habe nicht dr ank mein Kaffee yep –

+1

@ka_lin: PLZ 2 Tassen verwenden. : p – devpro

0

Das Problem ist, dass Sie die json_encode verwenden(), um das Array in einen String zu konvertieren, ich aber, Ich bin mir ziemlich sicher, dass Sie nur json_encode() löschen und das Array direkt in den POSTFIELDS-Parameter übergeben müssen.

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields); 

Auch in Ihrer ursprünglichen Nachricht, Sie haben „respektierten Ausgang“ und „erwartete Ausgabe“ - ich denke, das ist auch verwirrend.

Ich glaube, Sie meinten, der angesehene Ausgang ist erforderlich, und statt der erwarteten Leistung, das ist die tatsächlichen ausgegeben.

+0

Erwartete Ausgabe, die ich möchte – Sadikhasan

+0

versuchen, was ich vorgeschlagen habe. Ich wäre sehr überrascht, dass jede API ein mit einem String versehenes JSON-Objekt als Nutzlast erwarten würde. –

+0

Überprüfen Sie den Dokumentationslink http://www.shipstation.com/developer-api/#/reference/orders/createupdate-order/create/update-order – Sadikhasan