如何强制Web Api方法返回日期,格式如下:/ Date(46546)/

时间:2016-11-02 06:48:17

标签: json asp.net-web-api asp.net-web-api2 jquery-jtable

我正在迁移一个旧应用程序,我需要一个特定的web api 2方法返回如下日期:/Date(46546)/而不是ISO 8601格式:2016-10-31T07:22:57.1153868-05:00

我的网络API方法如下:

[Route("GetListData/{jtStartIndex:int=0}/{jtPageSize:int=0}/{jtSorting?}")]
[HttpPost]
public HttpResponseMessage GetListData(int jtStartIndex, int jtPageSize, string jtSorting)
{
    try
    {
        var dataList = DataContainer.Instance.Data;
        //HERE dataList is a collection of a custom model, a model that have properties of datetime type.

        return this.Request.CreateResponse(HttpStatusCode.OK,
            new { Result = "OK", Records = dataList, TotalRecordCount = dataList.Count });
    }
    catch (Exception ex)
    {
        return this.Request.CreateResponse(
            HttpStatusCode.InternalServerError,
            new { Result = "ERROR", Message = ex.Message });
    }
}

1 个答案:

答案 0 :(得分:1)

据我所知,较新的WebAPI默认使用JSON.NET作为序列化程序,它遵循JSON标准,因此无法序列化您请求的格式,这不符合JSON标准。

旧的WebAPI使用了Microsoft自己的DataContractJsonSerializer,它只支持非标准兼容的格式。

回到序列化器:

首先,you have to add a serializer to your WebAPI project位于可用序列化程序列表的末尾,它使用旧的序列化程序库。

然后你can select that very serializer for a certain controller