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

php curl 请求的响应显示为

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

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

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

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

PHP 版本 - 5.6.16

4

3 回答 3

2

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

您所要做的就是对其进行解码:

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

var_dump(json_decode($s));

一个例子

于 2016-08-10T10:19:46.107 回答
1

您可以使用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 字符串,而不是默认行为的对象。

于 2016-08-10T10:19:35.197 回答
0

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

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

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

于 2016-08-10T10:22:57.667 回答