如何验证 json 对象中的 JSON 对象数组?
Posted
技术标签:
【中文标题】如何验证 json 对象中的 JSON 对象数组?【英文标题】:How do I validate an array of JSON objects in a json object? 【发布时间】:2021-05-18 00:34:36 【问题描述】:我正在发送一个 JSON 对象数组,我将这些对象与其他数据一起发布到数据库:
"emotions":[
"id":1,
"intensity":67,
"new_intensity":67
,
"id":2,
"intensity":67,
"new_intensity":67
,
"id":3,
"intensity":64,
"new_intensity":64
,
"id":4,
"intensity":64,
"new_intensity":64
,
"id":5,
"intensity":64,
"new_intensity":64
],
"situation":"An event",
我想要做的是验证situation
和emotions[,]
json 数组:
控制器
public function store(Request $request)
$this->validate($request, [
'situation' => 'required',
]);
$data = ['data' => $request->input('emotions')];
$this->validate($data, [
'data.*.id' => 'digits:2|between:1,70',
'data.*.intensity' => 'digits:3|between:1,100',
'data.*.new_intensity' => 'digits:3|between:1,100'
]);
错误
传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定数组
我希望能够结合这两种验证方法,但我也不知道如何做到这一点?
Here is the answer I got my first try from
【问题讨论】:
【参考方案1】:您可以使用array validators。下面的代码可能会帮助您实现这一目标
$validator = Validator::make($data, [
'data.*.id' => 'digits:2|between:1,70',
'data.*.intensity' => 'digits:3|between:1,100',
'data.*.new_intensity' => 'digits:3|between:1,100'
])
您可以检查它是否失败并执行您想要的操作
if($validator->fails())
// Do something
【讨论】:
以上是关于如何验证 json 对象中的 JSON 对象数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Newtonsoft.Json 将包含数组数组的 json 对象解析为 C# 中的对象列表?
如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?
如何从 JSON 数组中的 JSON 对象中的单个值获取数据?