2016-04-11 15 views
5

Jsonシリアライズのこれらのプロパティをnullにしたいと思います。これについて 私のwebapi.configファイルにこの行を追加しました。Web APIのシリアライザのnull値とデフォルト値を無視します

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore}; 

public static void Register(HttpConfiguration config) 
     {   
      config.SuppressDefaultHostAuthentication(); 
      config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 
      config.MapHttpAttributeRoutes(); 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{identifier}", 
       defaults: new { identifier = RouteParameter.Optional } 
      ); 
      config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling= DefaultValueHandling.Ignore }; 
     } 

ただし、nullのプロパティは無視されません。

これは、それは私がDOBとIMAGEIDの値を割り当てていないWeb APIを

{ 
    "fullname": "Amit Kumar", 
    "imageid": 0, 
    "dob": null 
} 

からのJSONリターンです

public class UserProfile 
    { 
     [JsonProperty("fullname")] 
     public string FullName { get; set; } 

     [JsonProperty("imageid")] 
     public int ImageId { get; set; } 

     [JsonProperty("dob")] 
     public Nullable<DateTime> DOB { get; set; } 
    } 

私のクラスです。

私はこれに続きますLink、しかしそれは私の問題を解決しませんでした。

+0

をあなたがシリアライズしたり、選択的に決定する必要があります任意のオブジェクト内のすべてのNULLプロパティを無視しますかどのプロパティをnull値で無視しますか? –

+0

@FedericoDipuma:すべてのオブジェクトで無視したいので、それをグローバルに追加しました。 –

+0

@MostafizurRahman:いいえ、重複する質問ではありません。 –

答えて

0

Newtonsoft.Json source codeを見ると、JsonPropertyAttributeはクラスのプロパティを修飾して、NullValueHandlingJsonSerializerSettingsで指定したものより優先していると思います。

、このような属性を削除(あなたがグローバルに定義されたNullValueHandlingを使用する場合)、または明示的にNullValueHandlingを指定して次のいずれか

public class UserProfile 
{ 
    [JsonProperty("fullname")] 
    public string FullName { get; set; } 

    [JsonProperty("imageid")] 
    public int ImageId { get; set; } 

    [JsonProperty("dob", NullValueHandling = NullValueHandling.Ignore)] 
    public Nullable<DateTime> DOB { get; set; } 
} 
+0

これらのJsonPropertyを削除しましたが、それでも問題は同じです。 –

+0

これは本当に奇妙な動作です。私は新しいWeb APIプロジェクトで問題を再現しようとしましたが、すべて正常に動作しています。現在の情報で私は何が間違っているかもしれないという手掛かりはありません。 Startup.csまたはGlobal.asax.csファイルの内容を質問に追加してください。 –

+0

gloabal.asaxファイルを追加した後で動作します。 –

関連する問題