如何在Laravel5中查询Guzzle返回的嵌套对象并获取单个数据
Laravel Guzzle返回数据遍历解决方案
1. 先确认Guzzle响应解析逻辑
你需要先将Guzzle返回的JSON响应体转换为可访问的对象或数组,示例处理代码:
$client = new \GuzzleHttp\Client(); $response = $client->get('你的接口地址'); // 解析为对象(对应你原来的->访问方式) $data = json_decode($response->getBody()); // 若想使用数组访问,可改为: // $data = json_decode($response->getBody(), true);
2. 调整Blade遍历代码
你原有写法的问题在于:返回数据的items数组存放在顶层people属性下,直接遍历$data只会获取到唯一的people元素,无法遍历到单条人员数据。
对象访问写法(匹配你原来的使用习惯)
<ul> @foreach($data->people->items as $item) <li> 姓名:{{ is_object($item->name) ? reset((array)$item->name) : $item->name }}<br> 年龄:{{ $item->stats->age }}<br> 身高:{{ $item->stats->height }}<br> 链接:{{ $item->link }} </li> @endforeach </ul>
数组访问写法(如果你解析时加了第二个true参数)
<ul> @foreach($data['people']['items'] as $item) <li> 姓名:{{ is_array($item['name']) ? reset($item['name']) : $item['name'] }}<br> 年龄:{{ $item['stats']['age'] }}<br> 身高:{{ $item['stats']['height'] }}<br> 链接:{{ $item['link'] }} </li> @endforeach </ul>
补充说明
你提供的返回JSON中name字段结构不符合标准JSON格式("name":{"William"}缺少键名),如果实际返回中name为直接的字符串值,可直接输出{{ $item->name }},不需要额外的类型判断转换。
内容的提问来源于stack exchange,提问作者mheonyae
相关产品推荐
相关产品推荐

