WebApiが返すJSONのフィールド名にFieldが付く

2017/07/08 Web API
細々したプロパティがたくさんあるスケジュールデータをWebサービスから取得し、カレンダーに表示するため、WebApiでJSONに変換する際、JSON用のモデルを作るのが面倒で取得したデータをそのままJSONで投げたところ、JSONの中身をみたら、なぜか"name":valueのname部分がnameFieldと言うようにみんな後ろにFieldが付いている。
原因はWebApiConfig.csの下記の部分をコメントアウトしていたこと。
// JSON データにはキャメル ケースを使用します。
//config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
型に[Serializable]が付いているとprivateの変数もシリアライズされるとのこと。
特にこだわりないのでコメント外しましたが、どうしてもキャメル ケースにして欲しくない!という場合はDefaultContractResolverを指定する必要がありそうです。
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

Web Apiのルーティング

2016/09/29 Web API
ASP.Net MVC5のプロジェクトにjQuery用のApiControllerを追加し、ルートの設定もしたのにページが見つからない(404)エラー。

MVCのプロジェクトを作成する際、下記の「Web API」にチェックを入れていれば問題ない。
MVC新規プロジェクト


入れていない場合、初めてAPIのコントローラ追加時に下記のReadMeが表示されますが、赤枠の部分を読み落としていたのが原因。
readme.png

GlobalConfiguration.Configure(WebApiConfig.Register);

RouteConfig.RegisterRoutes(RouteTable.Routes);
よりも上にないといけないみたい。
OK キャンセル 確認 その他