【问题标题】:Problem decoding a JSON resopnse from an API service解码来自 API 服务的 JSON 响应时出现问题
【发布时间】:2020-02-24 21:43:45
【问题描述】:

我在 Laravel 6 下使用 Guzzle 6 处理来自 Web 服务的 JSON 响应时遇到问题。

我试图解码的响应在这里:

https://json.volotea.com/dist/stations/stations.json

在我的 php 代码中,我尝试这样:

$client = new Client();

$response = $client->request('GET','https://json.volotea.com/dist/stations/stations.json');

为了解码响应,我尝试了几种方法,例如:

$response->getBody();  // that returns a stream

$response->getBody()->getContents(); that returns an apparently correct answer but if I run the json_decode it returns a null as a result

我要疯了!

如何解码来自该服务的响应?

非常感谢

【问题讨论】:

  • jsonlint.com 说它有效,但 PHP json_decode() 给出错误 - Syntax error, malformed JSON 这是一个巨大的结果,因此查找问题可能会很慢。或者问题可能是 json 太大了
  • 刚刚尝试使用file_get_contents("https://json.volotea.com/dist/stations/stations.json")json_decode() 失败,下载文件并从本地驱动器使用它,就可以了。问题似乎是 json 都在一条线上,导致它崩溃。
  • 将 JsonString 复制到一个变量中,json_decode() 工作找到了!将 JSON 全部放在一行中,它仍然有效。出于某种原因,我认为这与响应的大小有关
  • 我已经成功地阅读了它,将它保存到一个文件并使用 JsonStreamingParser 来读取它(一个 JSON 流解析器)。如果您遇到困难,我可以回答我是如何做到的。

标签: php json php-7 guzzle guzzle6


【解决方案1】:

似乎使用 getContent 方法您已经操纵了 Json 结构 在 $response 上尝试 json_decode。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-13
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多