我正在和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对象。
答案 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