gpt4 book ai didi

php - 当来自 URL 的数据很小时,JSON 对象为 NULL?

转载 作者:搜寻专家 更新时间:2023-10-31 20:48:55 25 4
gpt4 key购买 nike

我有一个从 url 解码的 JSON 对象,如下所示:

    $var = json_decode(file_get_contents($url), true);

我得到的数据来自新的 battle.net API,它作为包含字符数据的 JSON 对象返回。

  • 这里是一个实际的链接,在该链接中可以找到字符并生成数据:Character Found .
  • 现在这里是一个不存在并生成错误的字符的链接:Character Not Found .

错误以包含“状态”和“原因”属性的 JSON 对象形式返回。 “status”属性的值将始终为“nok”。

我的问题是当未找到字符时,JSON 对象 $var 为 NULL,如果找到,则 JSON 对象 $var 包含正确的数据。我需要能够检查状态是否为“nok”,以便我可以输出适当的错误消息

我有:

  • 检查链接以确保它们生成正确。
  • json_decode(file_get_contents($url), true) 更改为:json_decode(file_get_contents($url), false) 并尝试将 $var 作为对象访问。
  • 尝试使用 cURL 而不是 file_get_contents($url)

我在 battle.net API 论坛上发帖,但我想我也会在这里尝试。

最佳答案

这是因为页面 Character Not Found 页面返回了一个 404 Not Found HTTP 响应代码,这很有道理,但被认为是一个错误。

在 HTTP 流包装器上遇到错误(404、500 等)时,文件函数(例如 file_get_contents)默认返回 false

为了忽略错误并返回内容,以便 json_decode 可以解析它,您需要使用上下文:

$context = stream_context_create(array(
'http' => array('ignore_errors' => true),
));

$var = json_decode(file_get_contents($url, false, $context), true);

关于php - 当来自 URL 的数据很小时,JSON 对象为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com