使用JsonSerializerSettings,我可以使用/序列化Microsoft DateTime格式,但DateTimes似乎继续使用ISO 8601标准反序列化
JsonSerializerSettings = new JsonSerializerSettings {
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
}
我试图编写一个自定义的JsonConverter来处理反序列化,但是我遇到了转义字符问题。
writer.WriteValue ("\\/Date(" + x + ")\\/");
写作
"\\/Date(1446145200000)\\/"
以前有人曾经解决过这个问题吗?没有找到一个好的解决方案,一直在寻找很多方式
答案 0 :(得分:3)
这里你不需要自定义转换器。使用DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
设置是正确的方法,适用于序列化和反序列化。确保您将设置传递给SerializeObject
和DeserializeObject
方法。如果您未通过设置,则会使用默认格式,即ISO 8601.
using System;
using Newtonsoft.Json;
public class Program
{
public static void Main()
{
Foo foo = new Foo { Date = new DateTime(2015,10,29,19,0,0) };
JsonSerializerSettings settings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
Formatting = Formatting.Indented
};
string json = JsonConvert.SerializeObject(foo, settings);
Console.WriteLine(json);
foo = JsonConvert.DeserializeObject<Foo>(json, settings);
Console.WriteLine(foo.Date.ToString());
}
}
class Foo
{
public DateTime Date { get; set; }
}
输出:
{
"Date": "\/Date(1446145200000+0000)\/"
}
10/29/2015 7:00:00 PM
答案 1 :(得分:0)
您的输入日期似乎已被序列化为刻度线。在自定义转换器中,您可以反序列化JSON值并使用它来初始化DateTime对象吗?