我正在制作 Laravel API,但我似乎无法在其中一篇文章中发送 JSON 数据。我检查了 StackOverflow 中的其他帖子,但似乎我的 JSON 请求是正确的,所以我似乎找不到错误:
这是我的控制器方法中的代码:
$validator = Validator::make($request->all(), [
"name" => "required|string",
"colors" => "json",
"sizes" => "json"
]);
if($validator->fails())
return response()->json(["errors" => $validator->errors()], 400);
这是请求正文:
{
"name": "Test",
"colors": {
"Man": "#0000ff",
"Second": "#FF0000"
},
"sizes": {
"titles": "20px"
}
}
错误:
{
"errors": {
"colors": ["The colors must be a valid JSON string."],
"text_sizes": ["The text sizes must be a valid JSON string."]
}
}
似乎有什么问题?谢谢你!
那么您需要传递 JSON 字符串而不是 JSON 对象。这可以通过以下方式完成json_encode
or JSON.stringify
.
作为对您上次评论的回答:
您可以在前端应用程序中执行此操作JSON.stringify
或者您可以使用以下内容来实现表单请求prepareForValidation()
: https://laravel.com/docs/8.x/validation#prepare-input-for-validation.
你会在哪里做json_encode()
关于 json 属性。喜欢:
protected function prepareForValidation()
{
$this->merge([
'colors' => json_encode($this->colors),
'text_sizes' => json_encode($this->text_sizes)
]);
}
或者在你的情况下:
$validator = Validator::make($request->merge([
'colors' => json_encode($request->colors),
'text_sizes' => json_encode($request->text_sizes)
]), [
"name" => "required|string",
"colors" => "json",
"sizes" => "json"
]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)