我创建了一个演示页面,通过使用以下代码将关联数组转换为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 >"
));
答案 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);
此外,在您的原始邮件中,您有“尊重输出”和“预期输出” - 我认为这也令人困惑。
我相信你的意思是,受尊重的输出必需,而不是预期的输出,即实际输出。