我想反序列化一个JSON字符串/对象和JSON对象包含一些日期时间字段。JSON反序列化的日期时间,直到毫秒在C#
我的函数来反序列化JSON对象是 -
public static T ParseJSONToObject<T>(string entity)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(entity, new IsoDateTimeConverter{
DateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss.fffffff"
});
}
我想要的日期 - 时间域应该转换至毫秒,如果以毫秒为单位没有价值,那么它应该显示为零的,直到7位数字。下面是我的JSON对象 -
[
{"Key": "PendingDate", "Value": "2017-06-15T13:58:00"},
{"Key": "OwnerId", "Value": "xyz"},
{"Key": "ProductList", "Value": "0"},
{"Key": "CreatedDate", "Value": "2017-06-16T09:11:21.678544"},
{"Key": "ModifiedDate", "Value": "2017-06-16T09:11:21.678544"}
]
但是当我通过这个对象到我的JSON解析器函数它不是我想要的格式返回日期时间值。
但是当我使用下面的代码来反序列化一个JSON字符串它给正确的输出 -
var json = "{\"timestamp\":\"2017-06-15T13:58:00.000\"}";
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
var r = ((DateTime)dict["timestamp"]).ToString("O");
并且输出为─
2017-06-15T13:58:00.0000000
这是我所需要的输出但我不知道我需要如何用我的JSON解析器函数实现 。
你有字典的数组,而不是一个单一的字典。另外,'DateTime'类型根本没有格式。它是一个像“int”和“double”这样的二进制值。您的*代码*虽然,将日期转换为*字符串*。毕竟这是什么问题? –
实际显示问题的邮政编码。您发布的内容表明您将某些(不存在的)DateTime格式的字符串表示混淆了。 BTW ISO8601是JSON.NET的默认设置。你不需要指定它 –