【问题标题】:Goutte Crawler convert JSONGoutte Crawler 转换 JSON
【发布时间】:2017-06-01 18:13:38
【问题描述】:

https://api.cinelist.co.uk/get/times/cinema/10565

此链接为我提供了电影院正在播放该特定电影的标题和时间的 json 列表。我想获取该信息并将其转换为字符串,但这怎么可能?我用过 json_decode,它说节点列表是空的。

这是我的代码:

function odeon(){
    $client = new Client();
    $crawler = $client->request('GET', 'https://api.cinelist.co.uk/get/times/cinema/10565');
    //print $crawler->text()."\n";
    json_decode($crawler);
    print_r($crawler);
}

【问题讨论】:

  • print_r(json_decode($crawler));
  • 它说 json_decode 需要一个字符串,而不是得到一个对象
  • DomCrawler 对象似乎没有任何方法可以转储完整的响应数据。如果你要使用 Guzzle,那么你可以这样做print_r(json_decode((string) $crawler->getBody()));
  • 那么我怎么能用 guzzle 做同样的功能呢?我已经安装了它,但我无法弄清楚
  • 喜欢这个stackoverflow.com/a/44266346/5892849 来自您的其他问题。只需将结果传递给 json_decode。您应该先尝试阅读一些教程以了解刮板的工作原理并阅读 Guzzle 的文档。您似乎在不了解基础知识的情况下试图实现太多目标,这从您之前的问题中可以明显看出。我的建议是阅读 Guzzle 文档。然后使用 symfony 的 DomCrawler 组件来抓取 html。您可以使用 json_decode 将 json 响应直接转换为数组或对象。

标签: laravel laravel-5 guzzle goutte


【解决方案1】:

file_get_contents() 可以解决这些简单的事情。

function odeon(){
    $data = file_get_contents('https://api.cinelist.co.uk/get/times/cinema/10565');

    $data = json_decode($data);
    return view()->make('odeon')->with(['listings' => $data->listings]);

}

然后在你的刀片中简单地做这样的事情:

@foreach($listings as $listing)
    <strong>{{$listing->title}} </strong>: 
    @foreach($listing->times as $time)
        <p>{{$time}}</p>
    @endforeach
@endforeach

【讨论】:

  • 看起来一切都很好,但是我需要将数据返回到刀片模板中,以便我可以将其设置为 div 等
  • 嗯,这不是你要求的。我将使用更多上下文更新我的示例。
  • function odeon 不返回视图,我该如何告诉它使用刀片?
  • 你的问题不是关于学习 laravel。这是如何将 json 转换为字符串。我可以更新我的示例,但要获得更好的答案,请询问您需要了解的内容,而不仅仅是其中的一部分。
猜你喜欢
  • 2020-04-22
  • 2015-06-25
  • 2021-02-24
  • 2019-10-29
  • 2014-03-01
  • 2013-09-14
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
相关资源
最近更新 更多