【问题标题】:Retrieving all number row from JSON response从 JSON 响应中检索所有数字行
【发布时间】:2016-11-04 16:20:30
【问题描述】:

我正在使用 Guzzle 连接到一个 API。 API 将为我提供一个有效的 JSON 对象,其中包含我需要的值。我尝试了几种方法来检索位于响应中的一组值,但此时每个请求只能通过行数获得一个:

这是我当前的代码:

public function index () {
    //$value = "07332927917462,07332927917455";
    $client = new Client();
    $response = $client->get('https://example.com/xxx', 
                             [ 'query' => [
                             'secret' => '2acbefghijklmnop',
                             'created' => '2016-01-01']]);

    $data = json_decode($response->getBody()->getContents());
    $array = $data->products;
    $collect = collect($array);
    $unique = $collect->unique('ean');
    $unique->values()->all();


    return dd($unique[0]->ean);
  }

在我的return dd($unique[0]->ean); 中,我只收到一个 EAN 值(通过数字),所以它看起来像这样;

"012345678910"

当我尝试使用 return dd($unique->ean); 调用它时,我收到一个错误:

Laravel response

基本上,我需要做的是获取所有行,而不仅仅是一个。所以请求类似于(例如目的)return dd($unique[all]->ean);,但我不知道如何处理这个?

任何帮助将不胜感激。

这是我使用dd($unique);的回复:

json

【问题讨论】:

    标签: php json laravel guzzle


    【解决方案1】:

    你到底想得到什么结果?

    您可以使用“减少”从您的集合中获取单个值。

    或者,如果您只想获取“ean”列表,请使用“map”并仅返回每一行的 ean:

    $eans = $unique->map(function($item){
        return $item->ean;
    })
    

    似乎没有“提取”方法,但这也应该有效:

    $eans = $unique->keyBy('ean')->keys();
    

    作为参考,这里是所有的收集方法:

    https://laravel.com/docs/5.2/collections#method-keyby

    【讨论】:

    • 你让我开心了一整天!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2019-05-13
    • 2017-08-10
    • 2020-03-12
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多