如何序列化JSON对象

时间:2016-09-20 06:52:57

标签: php json serialization

我创建了一个演示页面,通过使用以下代码将关联数组转换为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\"
}"

因为我收到错误&#34;无法反序列化当前的JSON对象(例如{\&#34; name \&#34;:\&#34; value \&#34;})< / strong>在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 >"
   ));

2 个答案:

答案 0 :(得分:2)

使用addslashes()php函数

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

答案 1 :(得分:0)

问题是你正在使用json_encode()将数组转换为字符串,但是,我很确定你只需要删除json_encode()并将数组直接传递给POSTFIELDS参数。

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields);

此外,在您的原始邮件中,您有“尊重输出”和“预期输出” - 我认为这也令人困惑。

我相信你的意思是,受尊重的输出必需,而不是预期的输出,即实际输出。