web-dev-qa-db-ja.com

JSONプロパティは、ASP .Net Core 1.0.0-rc2-finalから1.0.0へのスワップで小文字になりました

プロジェクトをASP .Net Core 1.0.0-rc2-finalから1.0.0に変更しました。 JSONプロパティが大文字になっているため、当社のWebサイトとクライアントは動作を停止しました。たとえば、このJavaScript行は失敗します

for (var i = 0; i < collection.Items.length; i++){

これは、コントローラーが「アイテム」ではなく「アイテム」配列を呼び出すようになったためです。更新されたパッケージをインストールし、project.jsonファイルを編集する以外に変更は加えていません。プロパティを大文字にしたままのC#モデルファイルは変更していません。

ASP.Net Coreコントローラーが小文字のプロパティでJSONを返し始めたのはなぜですか?モデルのプロパティ名の大文字と小文字を尊重して、それらに戻るにはどうすればよいですか?

63
dumbledad

MVCはデフォルトでキャメルケース名でJSONをシリアル化します

このコードを使用して、デフォルトでラクダケース名を回避します

  services.AddMvc()
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

ソース: https://github.com/aspnet/Announcements/issues/194

121

次のように動作を変更できます。

services
    .AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

こちらの発表をご覧ください: https://github.com/aspnet/Announcements/issues/194

14
Joe Audette

(ASP.NET Coreではなく)ASP.net WEB APIを使用している人向け。

WebApiConfigにこの行を追加します。

//Comment this jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

これを答えとしてここに追加すると、これはWeb APIのGoogle検索でも最初に表示されるためです。

0