试图从 API 获取 json 中非对象的属性
Posted
技术标签:
【中文标题】试图从 API 获取 json 中非对象的属性【英文标题】:Trying to get property of non-object in json from API 【发布时间】:2020-08-08 05:59:12 【问题描述】:我正在使用 Discord API 让 Discord 公会中的成员显示 10 个随机用户,并使用 foreach
方法将其显示在带有刀片的视图中。
我从 API 获取 JSON,获取它的成员数组并对其进行切片以仅返回 10 个成员以将其从控制器发送到视图。
问题是,当我想解析它并使用数组的一个元素 (avatar_url
) 时,它不起作用,我收到以下错误消息:Trying to get property 'avatar_url' of non-object
这是我的控制器
class IndexController extends Controller
...
/**
* Function to get 10 random players on fivem
* @return array
*/
private function getServerPlayers()
$request = file_get_contents('https://discordapp.com/api/guilds/683766194884575355/widget.json');
$decoded = json_decode($request, true)['members'];
return array_slice($decoded, 0, 10);
/**
* Return index view
* @return Factory|View
*/
public function index()
return view('index')->with('players', $this->getServerPlayers())->with('clients', $this->getServerClients())->with('members', $this->getDiscordMembers());
这是我的看法
<div class="row">
<div class="col-lg-12">
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-all-bets" role="tabpanel"
aria-labelledby="pills-all-bets-tab">
<div class="responsive-table">
<table class="table">
<thead>
<tr>
<th scope="col">Nom du joueur</th>
<th scope="col">Statut</th>
</tr>
</thead>
<tbody>
@foreach($players as $player)
<tr>
<td><img src=" $player->avatar_url "> $player->username </td>
<td>En ligne</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
我认为这个问题有点愚蠢,但我被阻止了,我需要一些帮助!
谢谢。
【问题讨论】:
【参考方案1】:问题在于json_decode
返回的是一个数组而不是一个对象。
您可以使用以下方式将参数传递给视图:
return view('index',[
'players' => $this->getServerPlayers(),
'clients' => $this->getServerClients(),
'members' => $this->getDiscordMembers(),
]);
然后在视图中显示它们:
<img src=" $player['avatar_url'] "> $player['username']
【讨论】:
【参考方案2】:你应该像这样使用avatar_url
:
<td><img src=" $player['avatar_url'] "> $player['username'] </td>
因为你传递给 view 的是一个数组,而不是一个对象。
【讨论】:
以上是关于试图从 API 获取 json 中非对象的属性的主要内容,如果未能解决你的问题,请参考以下文章
如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?
使用 fetch、cors 时如何从 json API 获取属性?
试图从模型获取数据到视图,我得到这些错误: 试图获取非对象和未定义变量的属性