2016-12-05 3 views
-1

をデシリアライズするとき、私は私がNULL値でMVC WebAPIのにAJAXを経由して投稿していますJSONオブジェクトを持っている:ヌルプロパティJSON

{ 
    Id: 1234, 
    Contact: null 
} 

コントローラメソッドとオブジェクトはかなり普通です。

public HttpResponseMessage Post([FromBody]MyObject obj) 
{ 

} 

[DataContract] 
public MyObject 
{ 
    [DataMember] 
    public int Id { get; set; } 

    [DataMember] 
    public Affiliation Contact { get; set; } 
} 

[DataContract] 
public Affiliation 
{ 
    [DataMember] 
    public int Id { get; set; } 

    [DataMember] 
    public string FirstName { get; set; } 

    ... 
} 

コントローラのアクションにMyObjectにデシリアライズする場合、Contactプロパティがdefault(Affiliation)ある:

Contact = { Id = 0, FirstName = null, ... } 

しかし、私は実際にはそれがnullであることを望みます。 NullValueHandlingDefaultValueHandlingのシリアル化設定をthis postthis postに変更しようとしましたが、効果がありませんでした。 Contactをどうすればnullにすることができますか?

+0

これを再現することはできません。あなたの実際のルートオブジェクトは、あなたが 'Contact'プロパティを割り当てるデフォルトのコンストラクタを持っていますか? 'public MyObject() { this.Contact = new Affiliation(); } '? – dbc

+0

Nope、MyObject、およびAffiliationにはコンストラクタがありません。 –

答えて

0

ああ、FFS ...私はAJAX要求にdataプロパティを設定する前にJSON.stringifyを呼び出すwan't

。だから{ Id: 1234, Contact: null }のようなJSONを送信していないので、Id=1234&Contact=のようなフォームデータを送信していました。

関連する問題