Php 当URL中的数据很小时,JSON对象为空?
我有一个JSON对象,我正在从如下url解码:Php 当URL中的数据很小时,JSON对象为空?,php,json,Php,Json,我有一个JSON对象,我正在从如下url解码: $var = json_decode(file_get_contents($url), true); 我得到的数据来自新的battle.net API,该API作为包含字符数据的JSON对象返回 这里是一个实际的链接,在该链接中可以找到该字符,并且有要生成的数据: 现在,这里有一个不存在的字符链接,该字符生成错误: 错误作为包含“status”和“reason”属性的JSON对象返回。“状态”属性的值将始终为“nok” 我的问题是,当
$var = json_decode(file_get_contents($url), true);
我得到的数据来自新的battle.net API,该API作为包含字符数据的JSON对象返回
- 这里是一个实际的链接,在该链接中可以找到该字符,并且有要生成的数据:
- 现在,这里有一个不存在的字符链接,该字符生成错误:李>
- 检查链接以确保它们正确生成
- 将
更改为:json\u解码(file\u get\u contents($url),true)
并尝试将$var作为对象访问json\u解码(file\u get\u contents($url),false)
- 尝试使用cURL而不是
file\u get\u contents($url)
我在battle.net API论坛上发布了帖子,但我想我也会在这里尝试。这是因为页面字符Not Found page返回一个
404 Not Found
HTTP响应代码,这很有意义,但被认为是一个错误
在HTTP流包装器上遇到错误(404500等)时,默认情况下,文件函数(如File\u get\u contents
)将返回false
为了忽略错误并返回内容,以便json\u decode
能够解析它,您需要使用上下文:
$context = stream_context_create(array(
'http' => array('ignore_errors' => true),
));
$var = json_decode(file_get_contents($url, false, $context), true);
太棒了,谢谢,我读过关于使用流上下文的文章,但我没有发现任何似乎相关的东西。