PHP从CURL响应的JSON字符串中删除引号

时间:2016-08-10 10:16:56

标签: php json curl php-curl

 //...snip..
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;

php curl请求的响应显示为

  

“{\” 结果\ “:\” 成功\ “\ ”条目\“:\ ”22 \“,\ ”确认\“:\ ”是\“}”

但是,输出不应该在引号前面有\。 如何删除这些引号并返回正确的 JSON

{
"result":"success",
"entry":"22",
"confirm":"yes"
}

我尝试过的选项很少return print_r($result)。这是按预期返回的,但我认为这不是正确的方法。

PHP版本 - 5.6.16

3 个答案:

答案 0 :(得分:1)

你的输出是正确的,你有有效的json;这是一个字符串。

所有你需要做的就是解码它:

$s = "{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";

var_dump(json_decode($s));

An example

答案 1 :(得分:0)

您可以使用stripslashes()从JSON字符串中删除斜杠,然后使用json_decode()解码JSON字符串。

像这样,

$json_string="{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";
$json_string=stripslashes($json_string);
$json_array=json_decode($json_string,true);
print_r($json_array);

上面的方法只是从字符串中删除斜杠并使用 json_decode()来解码JSON字符串。

但您也可以使用斜杠直接解码字符串。 (感谢@jeroen) 像这样,

$json_string="{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";
$json_array=json_decode($json_string,true);
print_r($json_array);

json_decode()中的第二个参数表示您要解析数组中的JSON字符串而不是默认行为的对象。

答案 2 :(得分:0)

只需在curl中使用以下标题选项,将返回json对象:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

因为默认接受类型是Text / Plain,所以它会返回你解析的sting。通过设置上面的标题,您将收到json对象。