使用addslashes发布Json的帖子

时间:2017-04-04 13:33:40

标签: php json curl post

我需要:

$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 看起来完全相同:

enter image description here

但第二个版本从服务器返回错误"无法解码请求"。

如何在我需要的例子中将数组转换为JSON?

1 个答案:

答案 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