21

Json.net のグローバル設定を指定する方法はありますか?

私たちが抱えている問題は、すべての DateTimes が UTC に設定されることです (当然のことです)。従来の目的のために、デフォルトを現地時間にしたいと考えています。次のコードをあちこちに配置したくありません。

var settings = New JsonSerializerSettings();
settings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
JsonConvert.DeserializeObject(json, settings);
4

2 に答える 2

34

それで、これはJson.net 5.0 Release 5に追加されました

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    DateTimeZoneHandling = DateTimeZoneHandling.Local
};

リリースノートから:

アプリケーションで で一度設定すると、 / 、および/JsonConvert.DefaultSettingsへのすべての呼び出しでデフォルト設定が自動的に使用されます。これらの呼び出しに対してユーザーが指定した設定は、デフォルト設定を上書きします。JsonConvert.SerializeObjectDeserializeObjectJToken.ToObjectFromObject

Facebook や Twitter のライブラリなど、JSON をカスタマイズしてはならない場合があるため、デフォルトでJsonSerializerは を使用せずDefaultSettings、これらのフレームワークや、デフォルト設定を使用してはならないアプリケーション内の場所に対してオプトアウトを提供します。それらを使用する を作成するJsonSerializerには、新しいJsonSerializer.CreateDefault()メソッドがあります。

ASP.NET が Newtonsoft を直接呼び出す場合 (モデル バインディングや応答の書式設定など) は、これらのグローバルな既定の設定を使用しないことに注意してください。ASP.NET によって内部的に使用されるデフォルトを設定するには、 Andreiによるこの回答を参照してください。

于 2013-05-08T11:05:23.800 に答える