【发布时间】: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