Laravel/Vue - 传递数据:Json 嵌套值作为字符串
Posted
技术标签:
【中文标题】Laravel/Vue - 传递数据:Json 嵌套值作为字符串【英文标题】:Laravel/Vue - Passing data : Json Nested values as string 【发布时间】:2019-11-17 21:31:08 【问题描述】:我正在尝试将一个 JSON 对象从我的 Laravel 后端传递到我的 Vue 前端,但是其中一个嵌套属性正在以字符串而不是对象的形式返回。有问题的对象是user.options
,如下所示。
user.options
对象格式正确,但是当我发送响应时,它被视为字符串。我可以在前端将字符串转换为 JSON,但这并不理想。
public function update(Request $request)
$user = $this->user;
$user->options = json_encode([
'cart' => $request->only('product_id', 'code', 'product_slug', 'pic_url', 'request')
]);
$user->save();
return response()->json($user);
【问题讨论】:
【参考方案1】:无需手动序列化属性的 JSON。相反,您可以使用 Eloquent 的 $casts
属性来定义您的 options
应该被视为对象:
class User
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'options' => 'object',
];
然后您可以将数组和对象分配给该属性。 Eloquent 会将其作为 JSON 存储在后台。当您检索该属性时,Eloquent 会再次将其转换回一个对象:
public function update(Request $request)
$user = $this->user;
$user->options = [
'cart' => $request->only('product_id', 'code', 'product_slug', 'pic_url', 'request')
];
$user->save();
return response()->json($user);
【讨论】:
以上是关于Laravel/Vue - 传递数据:Json 嵌套值作为字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何将数组从 Laravel Blade 传递到 Laravel 6/Vue 2.6 中的 Vue 组件。*
在子级循环中获取父级 json 数据。 (Laravel Vue js)