Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ServiceStack使用JsonSerializer序列化JsonObject会生成无效的json日期_C#_Json_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Json,servicestack" /> servicestack,C#,Json,servicestack" />

C# ServiceStack使用JsonSerializer序列化JsonObject会生成无效的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) };

我正在使用ServiceStack JsonObject.Parse来反序列化未知类型

之后,我使用ServiceStack JsonSerializer.SerializeToString重新序列化回json

对象上有一个DateTime属性,当它被重新序列化时,json对于日期是不正确的

下面是示例代码

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