C# JSONVERT反序列化为.Net对象错误的日期格式
我有一个.net核心web api,当从xamarin表单调用时,返回如下数据C# JSONVERT反序列化为.Net对象错误的日期格式,c#,xamarin.forms,json.net,json-deserialization,C#,Xamarin.forms,Json.net,Json Deserialization,我有一个.net核心web api,当从xamarin表单调用时,返回如下数据 {"id":1,"customer":"XXX Pty Ltd","salesman":"Fred","shipmentDate":"2020-01-08T00:00:00"} 我使用Jsonconverter.DeserializeObject方法转换为.Net对象,代码如下 var result = JsonConvert.DeserializeObject<Logis[]>(returnJson)
{"id":1,"customer":"XXX Pty Ltd","salesman":"Fred","shipmentDate":"2020-01-08T00:00:00"}
我使用Jsonconverter.DeserializeObject方法转换为.Net对象,代码如下
var result = JsonConvert.DeserializeObject<Logis[]>(returnJson);
[编辑]在我的WebAPI中,我修改了ViewModel类,方法是为日期添加一个string属性,并将其格式化为所需的格式。我不确定我的方法是否正确,但我得到了我需要的结果
public class ViewModel
{
public int Id { get; set; }
............
public DateTime ShipmentDate { get; set; }
public string ShipmentDateString
{
get
{
return ShipmentDate.ToString("dd-MM-yyyy");
}
}
}
在xamarin表单中,我使用ShipmentDateString属性(而不是ShipmentDate)绑定它。您可以在正在运行的环境中设置正确的区域性(如果您抱怨调试器正在显示您不喜欢的格式),也可以直接指定格式:
Console.WriteLine(ShipmentDate.ToString("dd/MM/yyyy HH:mm:ss"));
反序列化时,可以将其转换为指定的日期时间格式:
var format=“dd/MM/yyyy”//您的日期时间格式
var dateTimeConverter=new IsoDateTimeConverter{DateTimeFormat=format};
var result=JsonConvert.DeserializeObject(returnJson,dateTimeConverter);
您可以尝试使用以下方法:
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
}
}
并以这种方式使用它:
[JsonConverter(typeof(DateFormatConverter), "dd/MM/yyyy")] //accordinga to specific requirements
public DateTime ShipmentDate { get; set; }
请参阅在dateTime属性上附加为标记的自定义dateTime格式类的答案
[JsonProperty("ShipmentDate")]
public DateTime ShipmentDate { get; set; }
没有。
DateTime
没有格式,不管你用什么来显示它,都要用那种格式。如果您想以特定的方式查看它,您需要将其转换为具有指定本地化和/或格式的字符串。我不确定您在说什么,因为DateTime作为对象没有格式,是您的接收器API将其作为字符串接收,然后尝试解析它还是什么?请看,也许这能满足你的需要这能回答你的问题吗@iakobski感谢你的指导。我只是将对象转换为字符串数据类型,并在返回到客户端之前在API中对其进行格式化。谢谢这里有一个类似的问题,不清楚为什么会被升级,OP能够反序列化为DateTime而没有任何问题。他问的是m/d/y与d/m/y的格式这是一个示例代码,您可以根据需要定义fomat,这只是一个想法是的,这是一个很好的示例,但它没有解决OP的问题。
[JsonProperty("ShipmentDate")]
public DateTime ShipmentDate { get; set; }