我之前也问过同样的问题。我想从以下位置解码json:http://pad.skyozora.com/data/pets.json.以下是我以前使用的代码:
<?php
$html=file_get_contents("http://pad.skyozora.com/data/pets.json");
var_dump(json_decode($html,true)); //return null
var_dump(json_last_error()); // return 4
?>
从上一个答案中,我知道json返回中有UTF8DOM。我尝试了一个类似问题的答案:json_decode在Web服务调用后返回NULL,但所有的答案都不适用于我
在做了更多的研究后,我发现了一种有效的方法:
<?php
$html=file_get_contents("http://pad.skyozora.com/data/pets.json");
$html=preg_replace('/['x00-'x1F'x80-'xFF]/', '', $html);
var_dump(json_decode($html, true));
var_dump(json_last_error());
?>
这成功地将json解码为数组。然而,所有的中文和日文字符串也被删除了。有什么想法吗?
编辑:
我曾经http://jsonlint.com/从中解码jsonhttp://pad.skyozora.com/data/pets.json.它停在这里:
[
161,
"進化的紅面具",
0,
-1,
0,
-1,
1,
1,
10,
50,
1,
0,
0,
0,
0,
[
],
[
0,
0,
0,
0,
0,
0,
0
],
"http:'/'/i.imgur.com'/Y1jZlGW.png",
[
"ウルカヌ火山",
"メジェド
并给我错误:
Parse error on line 5001:
...山", "メジェド
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
但是我看不出json的这部分有任何问题。
返回错误代码4是由于JSON_ERROR_SYNTAX
导致的,您必须尝试修复json。
如果你在浏览器中访问url,你可以看到以下消息:
bad character in string literal at line 1 column 294388