やりたいこと
C#のWEBAPIでPOSTされてきたJSON配列を受け取りたい
単一のJSONファイルを受け取るAPIはできたのですが、複数のJSONが格納されたJSON配列をブラウザから受け取る方法が分かりません。
「Jig」というエンティティクラスを作成し、DBコンテキストに登録しています。
「JSON配列をJigクラス型を引数としたAPIに渡すにはAPI側のどこをどう変更すればいいか」が知りたいです。
C#でWEBAPIの作成経験のある方、アドバイスを頂ければと思います。
os:windows10
ide:visual studio2019
バックエンド:ASP.NET Core WEBAPI 3.0 Entity Framework
フロントサイド:Javascript(Vue.js) ※ソース未記載
ソースコード
C#
1 [HttpPost("insert")] 2 [ProducesResponseType(typeof(Jig), StatusCodes.Status201Created)] 3 [ProducesResponseType(StatusCodes.Status400BadRequest)] 4 public async Task<ActionResult<Jig>> InsertJig(Jig jig) 5 { 6 7 try 8 { 9 _logger.LogInformation("InsertJig Start"); 10 11 if (JigParamCheck(jig) != 0) 12 { 13 return BadRequest(); 14 } 15 16 //テーブルのデータをSelectする 17 var Jig = await _context.Jig 18 .Where(s => s.Po == jig.Po && s.PoSub1 == jig.PoSub1 19 && 20 s.IsDeleted != ConstItem.CD_DATA_CNTL_DEL) 21 .FirstOrDefaultAsync(); 22 23 if (Jig == null) 24 { 25 var insertJig = new Jig() 26 { 27 Po = jig.Po, 28 PoSub1 = jig.PoSub1, 29 PoSub2 = jig.PoSub2, 30 Remark = jig.Remark, 31 IsDeleted = ConstItem.CD_DATA_CNTL_NEW, 32 CreatedAt = DateTime.Now, 33 CreatedUserId = HttpContext.User.Identity.Name, 34 UpdatedAt = DateTime.Now, 35 UpdatedUserId = HttpContext.User.Identity.Name 36 }; 37 38 _context.Jig.Add(insertJig); 39 await _context.SaveChangesAsync(); 40 41 _logger.LogInformation("InsertJig Insert Finish"); 42 43 return CreatedAtAction(CD_TRANS_INSERT, new { id = insertJig.Po }, insertJig); 44 } 45 else 46 { 47 throw new Exception("すでに値が存在します!!!"); 48 } 49 } 50 catch (Exception ex) 51 { 52 _logger.LogError(ex, "InsertJig Error"); 53 throw ex; 54 } 55 }
上記ソースコードを実行しSwagger上でJSON配列をポストした際、以下のエラー文が出ます。
{ "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "One or more validation errors occurred.", "status": 400, "traceId": "|768239e9-4a798d95973baa0b.", "errors": { "$": [ "',' is invalid after a single JSON value. Expected end of data. Path: $ | LineNumber: 10 | BytePositionInLine: 1." ] } }
回答2件
あなたの回答
tips
プレビュー