JSON 中的 ASP.NET Web API 日期格式未成功序列化 [英] ASP.NET Web API Date format in JSON does not serialise successfully

查看:26
本文介绍了JSON 中的 ASP.NET Web API 日期格式未成功序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

全部,

我们正在使用 ASP.NET Web API,其中我们有一个基于 REST 的服务,有效负载为 JSON.如果我将以下日期作为字符串传递,例如

We are using ASP.NET Web API where we have a REST based service with JSON for the payload. If I pass the following Date as a string e.g

sampleObj: {
...
myDate: "31/12/2011 00:00:00",
...
}

作为 JSON 负载中的属性值,日期属性被反序列化为 DateTime.MinValue.字符串格式是否有效?

as an attribute value in the JSON payload, the date attribute gets deserialised into a DateTime.MinValue. Is the string format valid?

我们知道格式2012-10-17 07:45:00"可以成功连载,但我们不能保证收到的所有日期都是这种格式.什么是有效选项?

We know the format "2012-10-17 07:45:00" serialises successfully but we cannot guarantee that all dates received will be in this format. What are the valid options?

推荐答案

在 ASP.NET Web API 中,您可以通过 JsonFormatter 的 SerializerSettings 添加不同的 Json.NET DateTimeConverters,让您的服务理解不同的 DateTime 格式.

In ASP.NET Web API, you can add different Json.NET DateTimeConverters through the JsonFormatter's SerializerSettings to make your service understand different DateTime format.

但是,我认为 Json.NET 中没有采用31/12/2011 00:00:00"这种格式的默认 DateTimeConverter.在这种情况下,您实现自定义 DateTimeConverter.

However, I do not think there is a default DateTimeConverter from Json.NET that takes in this format "31/12/2011 00:00:00". In this case you implement your custom DateTimeConverter.

WebApiConfig.cs:

WebApiConfig.cs:

        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new IsoDateTimeConverter());
        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new MyDateTimeConverter());

自定义日期时间转换器:

Custom DateTimeConverter:

public class MyDateTimeConverter : DateTimeConverterBase
{
    //...
}  

有关如何编写自定义 DateTimeConverter 的更多信息,我在 stackoverflow 上找到了一些您可能会觉得有用的内容:如何创建 json.net 日期转字符串自定义转换器.

For more information about how to write a custom DateTimeConverter, I found something on stackoverflow that you might find useful: How to create a json.net Date to String custom Converter.

这篇关于JSON 中的 ASP.NET Web API 日期格式未成功序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆