我需要:
$content = "{\"data1\":90,\"data2\":\"SUKAORU\",\"data3\":7483478334}";
curl_setopt_array($curl, array(CURLOPT_POSTFIELDS => $content);
我做了:
$_REQUEST = array("data1"=>90,"data2"=>"SUKAORU,"data3"=>7483478334);
$content1 = '"' . addslashes(json_encode($_REQUEST)) . '"';
curl_setopt_array($curl, array(CURLOPT_POSTFIELDS => $content1);
//or
$content1 = addslashes(json_encode($_REQUEST));
curl_setopt_array($curl, array(CURLOPT_POSTFIELDS => $content1);
//or
$content1 = json_encode($_REQUEST);
curl_setopt_array($curl, array(CURLOPT_POSTFIELDS => $content1);
$ content 和 $ content1 看起来完全相同:
但第二个版本从服务器返回错误"无法解码请求"。
如何在我需要的例子中将数组转换为JSON?
答案 0 :(得分:0)
不要使用addslashes
。只是不要使用它。
这里的斜杠:
$content = "{\"data1\":90,\"data2\":\"SUKAORU\",\"data3\":7483478334}";
...只是 PHP源代码的一部分。它们不是数据的一部分。
如果您使用json_encode
生成JSON,那么您不需要手动编写\"
来获取"
分隔字符串文字的引号。您没有字符串文字,而json_encode
正在生成引号。
这应该没问题。
$data = array("data1"=>90,"data2"=>"SUKAORU","data3"=>7483478334);
$json = json_encode($data);
curl_setopt_array($curl, array(CURLOPT_POSTFIELDS => $json);
请注意在"
之后添加遗失"SUKAORU
。