C# ServiceStack使用JsonSerializer序列化JsonObject会生成无效的json日期
我正在使用ServiceStack JsonObject.Parse来反序列化未知类型 之后,我使用ServiceStack JsonSerializer.SerializeToString重新序列化回json 对象上有一个DateTime属性,当它被重新序列化时,json对于日期是不正确的 下面是示例代码C# ServiceStack使用JsonSerializer序列化JsonObject会生成无效的json日期,c#,json,
servicestack,C#,Json,
servicestack,我正在使用ServiceStack JsonObject.Parse来反序列化未知类型 之后,我使用ServiceStack JsonSerializer.SerializeToString重新序列化回json 对象上有一个DateTime属性,当它被重新序列化时,json对于日期是不正确的 下面是示例代码 void Main() { var p = new Person { Name = "full name", Age = new DateTime(2000,1,1) };
void Main()
{
var p = new Person { Name = "full name", Age = new DateTime(2000,1,1) };
var json = ServiceStack.Text.JsonSerializer.SerializeToString(p);
Console.WriteLine(json);
var jo = ServiceStack.Text.JsonObject.Parse(json);
var json2 = ServiceStack.Text.JsonSerializer.SerializeToString(jo);
Console.WriteLine(json2);
}
class Person
{
public string Name {get;set;}
public DateTime Age {get;set;}
}
和结果(注意日期周围的额外斜线)
这是因为
JsonObject
只是字典
的包装,即:
public class JsonObject : Dictionary<string, string> { ... }
不幸的是,正如您所指出的,原始json消息是用WCF序列化的。此外,在链的后面,这些消息由绑定到使用XmlObjectSerializer派生(如DataContractJsonSerializer)的进程反序列化
public class JsonObject : Dictionary<string, string> { ... }
JsConfig.DateHandler = DateHandler.ISO8601