gpt4 book ai didi

php - 在 Laravel 中从数据库存储和加载 JSON 的最佳方法

转载 作者:行者123 更新时间:2023-12-03 20:00:33 25 4
gpt4 key购买 nike

我正在尝试将 json 存储到 db 中并将其加载回来
我试图存储

{name: "John", age: 31, city: "New York"}
它存储正确。我检查了数据库,它显示正确。

{name: "John", age: 31, city: "New York"}


我一直在看
"{name: \"John\", age: 31, city: \"New York\"}"
这是我的代码。
public function store()
{

$paste = new Paste;
$paste->uuid = Str::uuid()->toString();
$paste->data = trim(Request::get('data',''));
$paste->save();

return Redirect::to('/paste/'.$paste->uuid)->with('success', 'Created');

}

public function show($uuid)
{
$paste = Paste::where('uuid',$uuid)->first();
return response()->json($paste->data);
}
对我有什么提示吗?
在这里重现
https://www.bunlongheng.com/paste

尝试#2
如果我这样做
public function show($uuid)
{


$paste = Paste::where('uuid',$uuid)->first();
return View::make('layouts.fe.pastes.show', get_defined_vars());

}
在我看来,我只有这一行
{!!$paste->data!!}
我得到的数据与我现在提交的数据相同。
{name: "John", age: 31, city: "New York"}
但是浏览器将其检测为文本,而不是响应 JSON,这违背了我的意图。

尝试 #3
public function show($uuid)
{
$paste = Paste::where('uuid',$uuid)->first();
return response()->json(stripslashes($paste->data));

}
结果
"{name: \"John\", age: 31, city: \"New York\"}"

尝试#4
public function show($uuid)
{
$paste = Paste::where('uuid',$uuid)->first();
return View::make('layouts.fe.pastes.show', get_defined_vars());
}
看法
{{ json_encode($paste->data, JSON_UNESCAPED_SLASHES) }}
结果
"{name: \"John\", age: 31, city: \"New York\"}"

尝试 #5
我认为问题在于存储......而不是加载和渲染。
我试过
return response()->json($paste);
我的 JSON 解析器检测到它......
enter image description here
{
"id": 11,
"status": 0,
"uuid": "0c40f97d-7d98-42c6-864e-71d3ed81eed3",
"name": "n6ou",
"password": "",
"expiration": "",
"type": "json",
"data": "{name: \"John\", age: 31, city: \"New York\"}",
"created_at": "2021-04-22T22:53:11.000000Z",
"updated_at": "2021-04-22T22:53:11.000000Z"
}
这是我用来存储的
$paste->data       = trim(Request::get('data',''));
$paste->save();

试试#6
对于那些怀疑我的数据/内容的人
我试过在 Pastebin 中粘贴同一行
enter image description here
它已经清理干净,您可以在下面看到。
https://pastebin.com/raw/r9akUK1v

最佳答案

1- 您的列必须是 json 类型

$table->json('data');
2- 在您的模型中,您需要将列转换为数组
  protected $casts = ['data' => 'array'];
3- 将数据值发送到您的 Controller 必须是一个数组,以便您可以在其上使用数组 Laravel 验证:
[
'data' => 'required|array',
'data.*.name' => 'required'
....
]
4- 当您存储数据时,它会被自动解析,当您检索数据列时,它将被转换为数组

关于php - 在 Laravel 中从数据库存储和加载 JSON 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67221262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com