MVC4 WebAPI(RTM - 今日はVS2012 RTMがインストールされましたが、昨日はRCでこの問題が発生していました)でJSONとしてオブジェクトをシリアル化しようとしています。すべてのnullがJSON出力にレンダリングされます。このよう :MVC4を作成できませんWebApiにJSONのnullフィールドが含まれています
[{"Id": 1, "PropertyThatMightBeNull": null},{"Id":2, "PropertyThatMightBeNull": null}]
しかし、どのようなImはなっては、私はこのQを見つけた
[{"Id":1},{"Id":2}]
/あるWebApi doesnt serialize null fieldsが、答えはどちらか私のために動作しませんか私はどこを把握するために失敗しています答えを入れる。ここで
は、私が試したものです:Global.asax.csさんのApplication_Startで
を、私が追加:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; json.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
は、これは(ように見える)しないエラーと、実際に実行するようです私が試した次のものを見ることに基づいています。 (ApiControllerのサブクラスで)制御方法において
、追加:
base.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; base.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
を私はスルー段差として#2の両方の値が既にそれらの行の前に設定したので、実行#1が実行されたと言います。絶望の動きで
- 私がnullと欠席したプロパティにこのATTRIBを追加してみました(私は本当にすべてのオブジェクトのすべてのプロパティを飾るためにしたくないので):
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include, NullValueHandling = NullValueHandling.Include)]
すべて3つはヌルプロパティーを省略した同じJSONを生成します。
その他の注意事項:
- IISでローカルに実行するには、Windows 7、VS2012 RTM、(あまりにもに建設しようとしました)。
- コントローラメソッドが返されます。リストされたIEnumerableも返されます。
- シリアル化しようとしているオブジェクトはpocosです。
はそれが仕事をしたが判明 - または持っている必要があります。私は自分自身に謙虚さの完全な線量を与えるために捻挫していたものを掲示するでしょう:) – AndrewFreese
この回答には十分にありがとうございます。 – Simian
DefaultValueHandlingとNullValueHandlingの両方をそれぞれのインクルード値に設定する限り、最初の変種も(シリアライザ設定の新しいインスタンスを作成せずに)動作します – Masterfu