JSON语法错误发生在jsone_在php中解码时,但JSON数据实际上不包含任何语法错误
我正在尝试使用wordpress中的JSON获取帖子详细信息。在我的插件中,以下是JSON语法错误发生在jsone_在php中解码时,但JSON数据实际上不包含任何语法错误,php,json,wordpress,Php,Json,Wordpress,我正在尝试使用wordpress中的JSON获取帖子详细信息。在我的插件中,以下是json\u解码部分。但它返回null $post_count = intval($instance['post_count']); $eng_posts= @json_decode(file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=".$post_count), true); switch (json_last_
json\u解码
部分。但它返回null
$post_count = intval($instance['post_count']);
$eng_posts= @json_decode(file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=".$post_count), true);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
在上面的代码中,我得到了一个JSON\u ERROR\u语法错误。但实际上,当我在上测试URL返回的JSON数据时。它表示“有效的JSON”
为什么呢?这里有什么问题?响应服务器在开始json输出之前发送了3个奇怪的字符。通过这样做:
$var = file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=1");
for($i=0; $i<10; $i++) {
echo $var[$i] . " : " . ord($var[$i]) . "<br />";
}
服务器不应打印前三个字符(239187和191)。作为一种解决方法,您应该能够在剥离前三个字符后对其进行解析
我可以用以下代码解析您的json,代码从字符3开始:
$var = file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=1", false, NULL, 3);
var_export(json_decode($var));
问题是,您没有拿出数据包嗅探器来找出PHP请求的内容和响应的实际内容。使用jsonlint检查您的URL(不直接粘贴json)会得到json.parse:json数据的第1行第1列出现意外字符请告诉我如何解决此问题??嗨,steven。你是最好的。谢谢你的回答,它工作得非常好。我很难过,因为我没有足够的声誉而不能投票。非常感谢你,史蒂文。
$var = file_get_contents("http://athavaneng.com/?page_id=206861&posts_per_page=1", false, NULL, 3);
var_export(json_decode($var));