You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel视图中如何从JSON数据提取特定值(如用户ID)

从JSON字段中提取特定值的解决方案

嘿,我来帮你搞定这个JSON字段取值的问题~你的user_json是一个JSON格式的字符串,在Laravel里有几种简单好用的方式提取里面的id值:

方法1:在Blade视图中直接解析

你可以直接在视图里用json_decode()把字符串转成对象或数组,然后获取对应字段:

{{ json_decode($user->user_json)->id }}

要是更习惯用数组操作,给json_decode加第二个参数true就行:

{{ json_decode($user->user_json, true)['id'] }}

方法2:在控制器中提前解析(更推荐)

为了让视图代码更简洁,你可以在PagesController的home方法里先把JSON解析好,再传给视图:

public function home(){ 
    if (\Session::has('user_id')){ 
        $posts = DB::table('posts')->get(); 
        $user = DB::table('users')->where('id', \Session::get('user_id'))->first();
        // 解析JSON字段为对象
        $user->user_data = json_decode($user->user_json);
        // 要是想转成数组就用:$user->user_data = json_decode($user->user_json, true);
        return view('home', compact('posts', 'user')); 
    }else{ 
        return view('welcome'); 
    } 
}

之后在视图里就能直接调用:

{{ $user->user_data->id }}

如果是数组形式,就写成{{ $user->user_data['id'] }}

方法3:利用Laravel的属性转换(最佳实践)

如果这个JSON字段是你频繁要用到的,最好在User模型里配置属性转换,这样每次获取用户数据时,这个字段会自动解析成对象或数组:
先确保你有User模型,然后在模型里添加:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $casts = [
        'user_json' => 'object', // 转成对象,也可以用'array'转成数组
    ];
}

然后控制器里改用模型查询(代替DB门面):

$user = \App\Models\User::find(\Session::get('user_id'));

这时在视图里就能直接访问,不用手动解析:

{{ $user->user_json->id }}

如果设置的是array类型,就写成{{ $user->user_json['id'] }}


内容的提问来源于stack exchange,提问作者LaravelNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:56:12