Newtonsoft.Json自定义序列化日期

Ame*_*sed 13 c# serialization json json.net

Newtonsoft.Json用来序列化我的日期从C#到javscript我想要做的是让json序列化程序使用当前文化将日期格式化为字符串

这是我的Json序列化器得到的:

JsonConvert.SerializeObject(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

结果是:

"2016-07-08T17:10:17.6722753-05:00"
Run Code Online (Sandbox Code Playgroud)

但我更喜欢的是:

"08/07/2016 17:10:57"
Run Code Online (Sandbox Code Playgroud)

因为我目前的文化是巴西,我希望我的日期以上述方式显示.

是否有可能在全局范围内(对于任何可能序列化的日期)告诉Newtonsoft.Json中的json序列化程序使用它就好像它正在执行date.ToString()(因为ToString尊重文化System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat并相应地给出正确的格式)

Dev*_*ble 30

您需要将JsonSerializerSettings.DateFormatString设置为所需的格式.

var jsonSettings = new JsonSerializerSettings();
jsonSettings.DateFormatString = "dd/MM/yyy hh:mm:ss";

string json = JsonConvert.SerializeObject(someObject, jsonSettings);
Run Code Online (Sandbox Code Playgroud)

之后,您可以在每次使用序列化程序时传递设置对象,也可以按照dbc引用的答案中的步骤操作.虽然,你没有提到它在哪里运行(ASP.NET,桌面,UWP等),所以你在全球范围内设置它可能会有所不同.

  • 我正在使用MVC6你知道我在哪里可以放置代码,以便它适用于所有json.I把它放在startup.cs方法配置但它无法正常工作. (2认同)