.Net Web ApiはJsonデータの元のオブジェクト変数名の大文字と小文字の問題を返す

1799 ワード

この2,3日は,SignalRのWebSocketを用いてデータのリアルタイム配信機能を開発し,バックエンドでアクティブにフロントエンドにデータをブロードキャストしてJsonで配信する場合,フロントエンドで取得したJsonで対応クラスの変数名の頭文字がデフォルトで大文字で配信される.フロントエンドが取得したバックグラウンドは、Jsonのフィールドに頭文字で小文字のアルパカネーミング法を返します.原因はどこにあるのでしょうか.
調べてみると、私たちの一般的なWeb ApiやWeb MVCのControler内のJsonResult、ActionResult、IHttpActionResultなどがフロントエンドに返されるデータは、文法的に「アルパカ」ネーミング法の頭文字小文字で伝達されていることがわかりました.以下の3つの方法を簡単に説明します.
1)ルーティングを構成するWebApiConfigに次の属性を追加します.
//JSONデータにはミキシング大文字と小文字を使用します.アルパカ式ですがjavascriptの頭文字の小文字です. 
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//JSONデータにはミキシング大文字と小文字を使用します.属性名と同じサイズの出力
//config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
 
2)Global.asaxファイルのApplication_Startまたは分割されたWebModeulには、次のプロパティが追加されています.
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Convertersプロパティは、カスタムjson変換器を追加する.
ただし、これまでGlobalConfigurationクラスではWebApi ControlにおけるAction戻り値のシーケンス化メカニズムしか制御できなかったが、WebApi ControlにおけるActionパラメータの逆シーケンス化メカニズムを制御できず、MVC ControlのActionシーケンス化メカニズムも制御できなかった.
 
3)最後に、私たちの多くのネットユーザーが採用しているJsonProperty属性を追加して制限し、次の図のようにNewtonsoftを参照します.Json、属性ごとに制限すればOKです.ただし、エンティティから継承されたDTOが発生した場合は、JsonExtentionクラスのToJsonString(true,true)方式でオブジェクトを変換できます.
using Newtonsoft.Json;

/// 
///   。    
/// 
public class Product
{
   /// 
   ///   Id
   /// 
  [JsonProperty("productId")]
  public string ProductId { set; get; }
   /// 
   ///     
  /// 
  [JsonProperty("productName")]
  public string ProductName { set; get; }
}





転載先:https://www.cnblogs.com/Jashinck/p/9005740.html