【发布时间】:2018-11-20 08:07:50
【问题描述】:
在 ASP.NET WebApi 中: 我有一个 DTO 课程:
public class DTO
{
public string Date {get; set;}
}
当客户端(一个 Internet Explorer 插件)从这个 WebApi 请求数据时,我像这样返回 IEnumerable<DTO>:
return Request.CreateResponse(System.Net.HttpStatusCode.OK, dtoObject)
其中dtoObject 的类型为IEnumerable<DTO>。
在调试时,我检查了dtoObject[0].Date 的值,它显示22-Nov-18 12:00:00 AM,这是预期值。
在 Internet Explorer 插件中:
我有一个名为 Model 的模型类:
public class Model
{
public string Date {get; set;}
}
我这样请求 WebApi:
var response = await httpClient.PostAsJsonAsync(serviceUrl, requestDto);
var returnJson = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IEnumerable<Model>>(returnJson)
现在,当我检查result[0].Date 时,我得到12/11/2018 12:00:00 AM
而我期待22-Nov-18 12:00:00 AM
我已经读过不同的库/语言对日期值进行不同的序列化。但是,我使用string 来存储值,那么为什么值会发生变化?我想以dd-MMM-yy hh:mm:ss tt 格式接收Date 值。我如何做到这一点?
【问题讨论】:
-
您确实应该包含足够的代码,以便我们读者可以重现结果。这个问题可能是多方面的。文化覆盖,格式覆盖。等等。你真的只需要 entity.DateTimeProperty.ToString("mm/dd/yyyy")。也可能是其他主机只是将数据配置为这种格式,而您现在必须在您这边解析该数据。
-
包含日期的字符串在通过 JSON 传输时不会改变其格式。这是您的显示逻辑执行此操作。
-
我没有显示逻辑。我调试我的插件并看到
entity.date,我得到"07/11/2018 12:00:00 AM" -
是否值得使用反序列化日期格式化程序? stackoverflow.com/questions/21256132/… 见@Foy 的回答。与下面 Rebecca 在此问题中的回答相同,但它是本地的,而不是全局的。
-
能否请edit 分享字符串
returnJson的值?
标签: c# json asp.net-web-api json.net