Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSONVERT反序列化为.Net对象错误的日期格式_C#_Xamarin.forms_Json.net_Json Deserialization - Fatal编程技术网

C# JSONVERT反序列化为.Net对象错误的日期格式

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)

我有一个.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);
[编辑]
在我的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; }