将 JSON 日期反序列化为 C# 对象,日期时间返回 01/01/0001
Deserialize JSON Date to C# Object with DateTime Returning 01/01/0001
我正在使用 Newtonsoft 翻译 JSON 显示日期的字符串
"[{\"Name\":\"Learning\",\"Start Date\":\"2022-03-01\",\"End Date\":\"2022-04-30\"]"
我想将它反序列化为这个自定义对象
public class MyObject
{
public string Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
通过这样做
var myObject = JsonConvert.DeserializeObject<List<MyObject>>(jsonRecords,
new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd" });
但是 StartDate 和 EndDate 对象总是显示为 01/01/0001,而我希望它们以这种格式显示:dd/MM/yyyy
我也尝试过使用 new IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" }
但这也不起作用(我认为您需要使用日期来自 json 的格式?)
我做错了什么?
在 public DateTime StartDate { get; set; }
上方添加 [JsonProperty("Start Date")]
并在 public DateTime EndDate { get; set; }
上方添加类似内容:
public class MyObject
{
public string Name { get; set; }
[JsonProperty("Start Date")]
public DateTime StartDate { get; set; }
[JsonProperty("End Date")]
public DateTime EndDate { get; set; }
}
问题是 json 属性 名称 ('Start Date') 和 class 属性 名称 ('StartDate') 不一样所以它默认为 01/01/0001。
这将在不需要 IsoDateTimeConverter
的情况下工作。
好吧,如果您的属性与 JSON 属性不匹配,那是正常的。
“开始日期”之间有空格,因此您需要使用 JsonProperty 属性来指定要使用的 JSON 属性:
public class MyObject
{
public string Name { get; set; }
[JsonProperty(PropertyName ="Start Date")]
public DateTime StartDate { get; set; }
[JsonProperty(PropertyName = "End Date")]
public DateTime EndDate { get; set; }
}
您看到 01/01/0001 是因为它是日期时间默认值,您的值未映射。
我正在使用 Newtonsoft 翻译 JSON 显示日期的字符串
"[{\"Name\":\"Learning\",\"Start Date\":\"2022-03-01\",\"End Date\":\"2022-04-30\"]"
我想将它反序列化为这个自定义对象
public class MyObject
{
public string Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
通过这样做
var myObject = JsonConvert.DeserializeObject<List<MyObject>>(jsonRecords,
new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd" });
但是 StartDate 和 EndDate 对象总是显示为 01/01/0001,而我希望它们以这种格式显示:dd/MM/yyyy
我也尝试过使用 new IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" }
但这也不起作用(我认为您需要使用日期来自 json 的格式?)
我做错了什么?
在 public DateTime StartDate { get; set; }
上方添加 [JsonProperty("Start Date")]
并在 public DateTime EndDate { get; set; }
上方添加类似内容:
public class MyObject
{
public string Name { get; set; }
[JsonProperty("Start Date")]
public DateTime StartDate { get; set; }
[JsonProperty("End Date")]
public DateTime EndDate { get; set; }
}
问题是 json 属性 名称 ('Start Date') 和 class 属性 名称 ('StartDate') 不一样所以它默认为 01/01/0001。
这将在不需要 IsoDateTimeConverter
的情况下工作。
好吧,如果您的属性与 JSON 属性不匹配,那是正常的。 “开始日期”之间有空格,因此您需要使用 JsonProperty 属性来指定要使用的 JSON 属性:
public class MyObject
{
public string Name { get; set; }
[JsonProperty(PropertyName ="Start Date")]
public DateTime StartDate { get; set; }
[JsonProperty(PropertyName = "End Date")]
public DateTime EndDate { get; set; }
}
您看到 01/01/0001 是因为它是日期时间默认值,您的值未映射。