小编Jak*_*lde的帖子

使用JSON.net和.net WebApi反序列化TimeSpan

我有一个使用Entity Framework 4.1的ASP.NET WebApi项目.我试图返回一个实体并利用JSON.net进行反序列化.一切都运行良好但是当尝试使用TimeSpan属性反序列化实体时,我运行以下异常:

无法从System.String转换或转换为System.TimeSpan.

查看堆栈跟踪显示:

JsonSerializationException:将值"PT17H9M43.1671969S"转换为类型"System.TimeSpan"时出错.路径'TimeIn',第1行,位置890.

输出来自response.Content.ReadAsStringAsync().Result:

{ "CreatedDate": "/日期(1329851383157-0500)/", "ServicerUserId":6, "TimeIn": "PT17H9M43.1671969S", "超时": "PT17H28M43.1671969S"}

在使用JSON.net之前,我已经成功地反序列化了,System.Runtime.Serialization.JsonDataContractJsonSerializer但是我宁愿不使用这种方法.

用于从WebApi获取实体的代码

public T Get<T>(object id)
{
    using (var httpClient = NewHttpClient())
    {
        var response = httpClient.GetAsync(_endpoint + id.ToString()).Result;
        return JsonConvert.DeserializeObject<T>(response.Content.ReadAsStringAsync().Result);
    }
}
Run Code Online (Sandbox Code Playgroud)

WebApi控制器中用于返回实体的代码:

// GET /api/services/5
public Service Get(Guid id)
{
    var entry = db.Services.Find(id);
    if (entry == null)
        throw new HttpResponseException(HttpStatusCode.NotFound);
    return entry;
}
Run Code Online (Sandbox Code Playgroud)

任何关于如何反序列化TimeSpan的想法都将不胜感激.

c# json timespan json.net asp.net-web-api

5
推荐指数
1
解决办法
6728
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

json ×1

json.net ×1

timespan ×1