文字列へのJObjectのシリアル化を制御するにはどうすればよいですか?Json.NETを使ってオブジェクトと同じ方法でJObjectを直列化する方法は?
私はJObjectを返すいくつかのAPIを持っていますが、私は通常いくつかの変更を適用し、それらを永続化または返すことがあります。私はnullプロパティを永続化しないようにし、いくつかの追加の書式設定を適用したいが、JsonConvertは設定を完全に無視するようだ。ここで
が問題のサンプルです:
// startup.cs has the following
services.AddMvc().AddJsonOptions(o =>
{
o.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
public class SampleController : Controller
{
JsonSerializerSettings _settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
[HttpPost]
[Route("object")]
public object PostObject([FromBody] SomeObject data)
{
return JsonConvert.SerializeObject(data, _settings);
}
[HttpPost]
[Route("jobject")]
public object PostJObject([FromBody] JObject data)
{
return JsonConvert.SerializeObject(data, _settings);
}
public class SomeObject
{
public string Foo { get; set; }
public string Bar { get; set; }
}
}
は{ "Foo": "Foo", "Bar": null }
投稿:
/object
戻り{"Foo":"Foo"}
/jobject
戻り{"Foo":"Foo","Bar":null}
私が欲しいですJObjectメソッドはオブジェクトを使用しているのと同じ出力jsonを返します。ヘルパーを作成せずにこれをどのように達成できますか?同じ設定を使用してJObjectをシリアル化する方法はありますか?
は 'JObject'はJSONを返す' ToString'メソッドを持っていませんか? –
JsonConvert.SerializObject()でシリアル化中に 'JObject'を編集することはできません。 'JObject'は既にシリアライズされています。すべての' JsonConvert'がやっていることは、それを多かれ少なかれ放出します。 「[Newtonsoft Json.Net serialize JObjectは正しい設定でもnullを無視しません](https://stackoverflow.com/questions/29258587)」を参照してください。回避策については、[JSON.NET serialize JObject with null properties](https://stackoverflow.com/questions/33027409)を参照してください。 – dbc
@MikeMcCaughan JObject.ToStringはオブジェクトをjsonに変換しますが、受け入れるオーバーロードはありません設定オブジェクト – Natan