我正试图从JWTAuth令牌'user'密钥的返回中提取JSON值,但无法弄清楚如何使用php来寻址内部密钥。我有以下代码:
if(!$user = JWTAuth::parseToken()->authenticate()){
abort(401);
}
else{
return response()->json(compact('user'));
}
}
当在标题中包含正确的令牌时,我确实会收到用户信息
{"user":{"id":2,"organization_name":"test corp","user_type":"administrator","created_at":"2016-05-13 17:26:20","updated_at":"2016-05-13 17:26:20","user_firstname":"Requester","user_lastname":"chester","user_emailaddress":"requester@test.com","remember_token":null,"user_id":"uid-7e3a0e15-c97b-44b1-885d-4370f4d1"}}
然而,我无法找到一种方法来处理"用户"键中键的各个值。我如何获得的值,比如"user_firstname"键?
谢谢。
更新
使用laravel中的Log::Info函数将数据记录为本地日志。以下内容:
$json = response()->json(compact('user'));
$arr = json_decode($json, true);
Log::Info(var_dump($arr));
Log::Info($arr["user"]["user_firstname"]);
为var转储和多维数组调用返回NULL
您可能需要了解json_encode和json_edecode,以便将json对象转换为数组,反之亦然。请参阅此处的手册-http://php.net/manual/en/function.json-decode.php
$array = json_decode($json, true);
var_dump($array);
echo $array["user"]["user_firstname"];
$json = '{"user":{"id":2,"organization_name":"test corp","user_type":"administrator","created_at":"2016-05-13 17:26:20","updated_at":"2016-05-13 17:26:20","user_firstname":"Requester","user_lastname":"chester","user_emailaddress":"requester@test.com","remember_token":null,"user_id":"uid-7e3a0e15-c97b-44b1-885d-4370f4d1"}}';
$arr = json_decode($json, true); //Converts JSON string into array
echo "<pre>";
print_r($arr);
echo "<pre>";
您可以访问数组值:
echo $arr["user"]["user_firstname"]; //Prints Requester