【发布时间】:2016-11-29 07:39:04
【问题描述】:
我有一个 Restful WCF Http 服务,它返回 JSON 并且运行良好,除了 DateTime 格式不正确:
例如"AdjudDate": "/Date(1349409600000-0400)/"
环顾四周后,我在这里找到了一篇旧帖子,但我无法让该代码正常工作。它最后一次更新是在 2011 年。是否有更新的版本或实现? JSON.NET Serializer for WCF REST Services
这是我返回 IEnumerable 的代码。
//除了日期之外,所有的 JSON 值都是好的:
private IEnumerable<Customer> ProcessWcfPost(Customer searchmodel)
{
return _repository.GetCustomers(searchModel);
}
编辑 我当然也尝试过将返回类型更改为字符串而不是 IEnumerable 为:
private string ProcessWcfPost(Customer searchmodel)
{
var result = _repository.GetCustomers(searchModel);
return Newtonsoft.Json.JsonConvert.SerializeObject(result);
}
但我的 JSON 不太正确: [{\"ClaimProcessId\":1599986,\"ClmHdrId\":1011,\"ClmLineId\":1011,\"ClmAdjId\":1011,\"ReceivedDtSur\":\"2012-12-05T00:00: 00\",\"AdjudicationDtSur\":\"2011-10-05T00:00:00\"(on and on)...
【问题讨论】:
-
您考虑过使用 ASP.NET Web API 吗?它使 REST 服务的编写非常简单,并且使用 Json() 函数内置了 JSON 序列化。
-
是的,先生,我最初是作为一个 ASP.NET Web API 编写的,但我被命令将它变成一个 HTTP WCF 服务。这就是商业世界:)
-
所以使用 JsonConvert.SerializeObject() 你仍然得到错误的日期格式?您可以在 DateTime 属性上指定和属性以强制 Json.Net 如何对其进行格式化。这是 Json.Net 日期格式的指南,您可以在其中看到如何将其更改为您想要的格式:newtonsoft.com/json/help/html/datesinjson.htm
-
谢谢。使用 JsonConvert.SerializeObject() 日期是正确的,但所有 JSON 都加载了额外的反斜杠和引号。我错过了格式化选项吗?我正在使用 PostMan 调用我的 HTTP WCF 服务来呈现我的 JSON,也许这就是问题所在?
-
斜线只是 C# 中 " 的转义字符。如果您在 C# 调试器中查看字符串,它将具有这些斜线。WCF 服务返回的实际字符串应该是干净的 JSON。你能在此处发布 PostMan 的完整 HTTP 响应?