json_decode不适用于字符串

时间:2017-01-20 18:29:27

标签: json decode

使用此代码:

$url = 'https://www.xxxxxxx.com/api/v1/phone/?apikey=xxxxxxxxxx&id='.$id;

$cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);

curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
));
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($cURL);

curl_close($cURL);

    echo $result;    
    var_dump ($result);
    var_dump(json_decode($result, true));

我明白了:

  

{“电话”:“0 811 228 338”}

     

string(32)“{”telephone“:”X XXX XXX XXX“}”

     

NULL

我不明白为什么json_decode在这里不起作用?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我得到的小信息我相信它是一个json格式问题。

<?php

    $json = '{"foo-bar": 12345}';

    $obj = json_decode($json);
    print $obj->{'foo-bar'}; // 12345

?>

json引号无效 http://php.net/manual/en/function.json-decode.php

在某个验证程序中尝试使用http://jsonlint.com/

答案 1 :(得分:1)

解决方案是响应是UTF-8而不是UTF-8(SANS BOM)。 这意味着在字符串的开头有一个看不见的caractere(U + FEFF)。

解决方案:$result = substr($result, 3);

感谢您的帮助