我有一个来自web api的Json:
jsonstring ={"users":[{"id":1123,"last_update":"2016-02-28 14:53:04"}],"page":1,"pages":1}
我希望在像这样的对象中反序列化:
public class Rootobject
{
public User[] users { get; set; }
public int page { get; set; }
public int pages { get; set; }
}
public class User
{
public int id { get; set; }
public DateTime last_update { get; set; }
}
为此我使用:
var obj= JsonConvert.DeserializeObject<Rootobject>(jsonString);
null
的结果为last_update
。
jsonstring
是来自WebClient.DownloadString(url)
的字符串结果;看起来像上面的例子。
如何获取反序列化的日期?
编辑:
此帖Deserializing dates with dd/mm/yyyy format using Json.Net中没有一个解决方案可以帮我解决问题。
答案 0 :(得分:3)
var obj = JsonConvert.DeserializeObject<Rootobject>(jsonString,
new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
答案 1 :(得分:0)
将属性last_update
更改为Nullable,然后它允许您将null文本分配给DateTime类型。它提供了另一层次的间接性。所以使用如下:
public DateTime? last_update { get; set; }
这是为了接受日期,即使它为null,您可以在反序列化JSON时指定日期格式。使用此Thread作为
答案 2 :(得分:-1)
"2016-02-28 14:53:04"
不是有效的RFC3339日期时间,我认为它无法解析它。
必须是:
2016-02-28T14:53:04
另请注意,不能为null,因为DateTime
是一个结构。要使其可为空,请创建允许空值的数据类型DateTime?
。