使用file_get_contents($url); 返回json 使用json_decode 无法解析,该怎么办 ,curl 方法也用过,都不管用
使用file_get_contents($url); 返回json 使用json_decode 无法解析,该怎么办 ,curl 方法也用过,都不管用
你需要校验格式是否正确, 不BB上代码:
<?php
function treatJsonString($string)
{
$jsonData = json_decode($string, true);
switch (json_last_error()) {
case JSON_ERROR_NONE:
return $jsonData;
break;
case JSON_ERROR_DEPTH:
print '[Error] - Maximum stack depth exceeded' . PHP_EOL;
break;
case JSON_ERROR_STATE_MISMATCH:
print '[Error] - Underflow or the modes mismatch' . PHP_EOL;
break;
case JSON_ERROR_CTRL_CHAR:
print '[Error] - Unexpected control character found' . PHP_EOL;
break;
case JSON_ERROR_SYNTAX:
print '[Error] - Syntax error, malformed JSON' . PHP_EOL;
break;
case JSON_ERROR_UTF8:
print '[Error] - Malformed UTF-8 characters, possibly incorrectly encoded' . PHP_EOL;
break;
default:
print '[Error] - Unknown error' . PHP_EOL;
break;
}
return null;
}
$jsonString = '{"x":123,"s":[{"a":"1"}]';
var_dump(treatJsonString($jsonString));
首先确定一下你的Json有没有其他方式的转义,如果没有可以用Json格式化校验工具检测一下是否有问题。
在线Json格式化校验工具
http://www.bejson.com/
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答805 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答703 阅读✓ 已解决
这个问题自己解决了,第三方返回的数据是ascll的所以需要转换成utf-8格式 就可以了,跟json_decode没关系