。それはあなたがを動的にSerializerSettings
を変更することができます。
は、コントローラコードでusing Newtonsoft.Json;
を含めるようにして、コントローラのアクションの中に次の操作を実行してください:
var f = BindingContext.OutputFormatters.FirstOrDefault(
formatter => formatter.GetType() ==
typeof (Microsoft.AspNet.Mvc.Formatters.JsonOutputFormatter))
as Microsoft.AspNet.Mvc.Formatters.JsonOutputFormatter;
if (f != null) {
//f.SerializerSettings.Formatting = Formatting.Indented;
f.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
}
1はすぐに結果を参照してくださいので、私は、ただ唯一の私のテストのためにFormatting = Formatting.Indented
が含まれています。あなたはそれを必要としません。
UPDATED: MVC Webアプリケーションを使用して認証なしでデモプロジェクトを作成しました。それから私はmetod
public object TestMethod()
{
var testResult = new {
name = "Test",
value = 123,
nullableProperty = (string) null
};
return testResult;
}
次HomeController
に追加され、Home/TestMethod
にプロジェクトの起動URLを変更して、デモを開始しました。あなた場合、私は(1がちょうど標準using Microsoft.AspNet.Mvc;
を持っており、using System.Linq;
必要が)あなたは私が最初に掲載コードを使用するステートメントを使用して、追加を追加する必要はありません
{"name":"Test","value":123,"nullableProperty":null}
を見ることができますが、コードが読みやすくなる可能性using Microsoft.AspNet.Mvc.Formatters;
とusing Newtonsoft.Json;
があります。私はMicrosoft.AspNet.Mvc.Formatters
とNewtonsoft.Json
のためのusingステートメントを追加し、出力結果が
{
"name": "Test",
"value": 123
}
バージョン6.0.6での標準コード使用"Newtonsoft.Json"
を以下のようになりまし見える次
public object TestMethod()
{
var testResult = new {
name = "Test",
value = 123,
nullableProperty = (string) null
};
var f = BindingContext.OutputFormatters.FirstOrDefault(
formatter => formatter.GetType() == typeof (JsonOutputFormatter)) as JsonOutputFormatter;
if (f != null) {
f.SerializerSettings.Formatting = Formatting.Indented;
f.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
}
return testResult;
}
にコードを修正しました。我々はNewtonsoft.Json
の最新バージョンを使用するために、依存関係に"Newtonsoft.Json": "8.0.2"
を追加できます。 the issueで報告した、間接依存関係の解決に関する問題を参照してください。まだ開いています。
hereからテストプロジェクトをダウンロードできます。
私のコントローラメソッド内からBindingContextが見えないようですか?これはASPNET5のためのものですか? – Gillardo
@ user2736022:原因はあります。すべてのコントローラアクションの内部には、 'HttpContext'、' BindingContext'などのプロパティを持つ 'this'があります。メソッドの中に 'this.'と入力するだけです。 '.' intellysenseと入力すると' BindingContext'を含む 'this'のすべてのプロパティが表示されます。 C#では 'this.BindingContext'の代わりに' BindingContext'を書くことができます(推奨)。 – Oleg
あなたはそれが内部にある名前空間で確認できますか?それは私のコントローラがBindingContextの定義を含んでいないと言います。 – Gillardo