有没有办法指定 Json.net 的全局设置?
我们遇到的问题是它将所有日期时间都放在 UTC 中(这是正确的)。出于遗留目的,我们希望默认为当地时间。我不想把以下代码放在各处:
var settings = New JsonSerializerSettings();
settings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
JsonConvert.DeserializeObject(json, settings);
所以,这被添加到Json.net 5.0 版本 5
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local
};
来自发行说明:
设置一次JsonConvert.DefaultSettings在应用程序中,所有调用都会自动使用默认设置JsonConvert.SerializeObject
/DeserializeObject
, and JToken.ToObject
/FromObject
。用户为这些调用提供的任何设置都将覆盖默认设置。
因为有些情况下 JSON 不应该被定制,例如默认情况下,Facebook 或 Twitter 库JsonSerializer
不会使用DefaultSettings
,为这些框架或应用程序中不应使用默认设置的位置提供选择退出。创建一个JsonSerializer
确实使用它们有一个新的JsonSerializer.CreateDefault()
method.
请注意,当 ASP.NET 直接调用 Newtonsoft 时,例如在模型绑定或响应格式中,它选择不使用这些全局默认设置。要配置 ASP.NET 内部使用的默认值,请参阅这个答案 by Andrei.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)