質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

【C#】 WEBAPIのPOSTでJSON配列を受け取る方法について

suzuki999
suzuki999

総合スコア8

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

2回答

0評価

0クリップ

6348閲覧

投稿2020/08/24 07:55

編集2020/08/25 02:08

やりたいこと

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#

[HttpPost("insert")] [ProducesResponseType(typeof(Jig), StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task<ActionResult<Jig>> InsertJig(Jig jig) { try { _logger.LogInformation("InsertJig Start"); if (JigParamCheck(jig) != 0) { return BadRequest(); } //テーブルのデータをSelectする var Jig = await _context.Jig .Where(s => s.Po == jig.Po && s.PoSub1 == jig.PoSub1 && s.IsDeleted != ConstItem.CD_DATA_CNTL_DEL) .FirstOrDefaultAsync(); if (Jig == null) { var insertJig = new Jig() { Po = jig.Po, PoSub1 = jig.PoSub1, PoSub2 = jig.PoSub2, Remark = jig.Remark, IsDeleted = ConstItem.CD_DATA_CNTL_NEW, CreatedAt = DateTime.Now, CreatedUserId = HttpContext.User.Identity.Name, UpdatedAt = DateTime.Now, UpdatedUserId = HttpContext.User.Identity.Name }; _context.Jig.Add(insertJig); await _context.SaveChangesAsync(); _logger.LogInformation("InsertJig Insert Finish"); return CreatedAtAction(CD_TRANS_INSERT, new { id = insertJig.Po }, insertJig); } else { throw new Exception("すでに値が存在します!!!"); } } catch (Exception ex) { _logger.LogError(ex, "InsertJig Error"); throw ex; } }

上記ソースコードを実行し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." ] } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww

2020/08/24 08:29

何を作っているか(ASP.NET Web API? ASP.NET MVC? その他?)と開発環境(OS. Visual Studio のバージョン、.NET or Core どっちかとそのバージョン)ぐらいは書こう。
BluOxy

2020/08/24 10:38 編集

JigクラスがJson文字列にシリアライズできるかどうか判断できません。開発環境もですが、Jigクラスの定義も記載お願いします。
SurferOnWww

2020/08/25 02:42

ASP.NET のタグをつけてください。 クライアントから送信されてきた JSON 文字列をサーバーで受け取って、アクションメソッドの引数 jig にバインドできればいいのですよね? であれば、Jig クラスの定義(コード)と JSON 文字列のサンプルを質問欄を編集して追記してください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。