.NET中的ServiceStack.Text不反序列化嵌套的日期时间

时间:2016-05-13 23:27:37

标签: datetime xamarin deserialization servicestack-text

我正在和Xamarin的网络服务交谈。它以JSON格式通过线路发送日期,采用ISO-8601格式,如下所示:

" 2016-05-13T16:02:47.480-07:00"

如果我尝试反序列化一个日期,它可以正常工作。但是当DateTime是类的成员时,它不起作用。没有错误。以下是一些示例代码:

using ServiceStack.Text;

class TestDate {
   public DateTime  testDate;
}

void Test() {
    JsConfig.DateHandler = JsonDateHandler.ISO8601; 

    // this works just fine:
    String dateString = "2016-05-13T16:02:47.480-07:00";
    DateTime theDate = dateString.FromJson<DateTime> ();

    // this does not deserialize
    String testStr = "{\"testDate\":\"2016-05-13T16:02:51.923-07:00\"}";
    TestDate tester = testStr.FromJson<TestDate> ();
}

有什么想法吗?我没有看到任何错误,只是获取一个没有设置日期的新TestDate对象。

1 个答案:

答案 0 :(得分:0)

ServiceStack Text Serializer按预期进行序列化:

JsConfig.DateHandler = ServiceStack.Text.DateHandler.ISO8601;

var dto = new TestDate { testDate = new DateTime(2016, 05, 13, 16, 02, 47, 480) };
var json = dto.ToJson();
json.Print(); //= {"testDate":"2016-05-13T16:02:47.4800000"}

并正确反序列化:

var fromJson = json.FromJson<TestDate>();
Assert.That(fromJson.testDate, Is.EqualTo(dto.testDate)); //= true