laravel8で、jsonファイル中身のバリデーション(json_decodeで配列にしてValidator::make)
第一弾, フォームのバリデーション
第二弾, JSONファイルのバリデーション
laravelだから都合の良いやり方があるのかな?と思ったけど無かった…。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public function store(Request $request) { // jsonフィアルは必須・ファイル形式(formタグにenctype="multipart/form-data"属性がないと通ってしまう…。) $validator = \Validator::make($request->all(), [ 'json_file' => 'required|file', ]); if ($validator->fails()) { return response()->json([ 'status' => 400, 'errors' => $validator->errors() ], 400); } // jsonファイルの内容を配列に変換。出来なかったらJSONではないと判定 $json = json_decode($request->file('json_file')->get(),true); if ($json === NULL) { return response()->json([ 'status' => 400, 'errors' => 'The json file must be a valid JSON string.' ], 400); } // jsonの中身のバリデーション $rules = [ 'Type' => 'required|integer', 'Mode' => 'required|integer', 'List' => 'required|array', ]; $validator = \Validator::make($json, $rules); if ($validator->fails()) { return response()->json([ 'status' => 400, 'errors' => $validator->errors() ], 400); } // 保存処理を書く } |