【发布时间】:2015-12-10 08:37:36
【问题描述】:
目前,经典 asp .net 中的 Web 方法或大多数方法使用 system.web.script.serialization.javascriptserializer 类进行序列化,这将返回 javascript 对象的日期时间成员,其值例如为
"/日期(刻度数)/"
。我知道这是一个臭名昭著的问题,大多数人建议在我们收到数据后使用某种转换器,或者将数据作为字符串而不是对象返回。
例如类
public class Person
{
public String Name { get; set; }
public int Age { get; set; }
public DateTime DOB { get; set; }
}
如果通过带有 [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 装饰的 System.Web.Services.WebMethod 返回,则响应将在 result.d 中返回,如下所示
{Name:"Steve", Age:30, DOB:"/Date(1249335477787)/"};
我们需要应用一些代码将 DOB 转换为 ISO 格式或其他可接受的格式。
但我只是想看看是否有人进行了某种响应调整或使用覆盖的类从 Web 方法返回 DateTime 值。有没有办法覆盖 javascriptserializer 的功能并在 asp .net web 方法中使用它,以便它直接以 ISO 格式返回日期?我知道它可以通过几种方式在 asp .net MVC 中完成。
在 asp .net web 表单的 web 方法中也可以这样做吗?这也将节省大量代码和错误:)
【问题讨论】:
-
您可以使用 newtonsoft 编写自己的自定义 json 序列化器
-
是的,但是我如何告诉 WebMethod 使用这个新的自定义序列化程序来返回对象。我也不想将它作为字符串返回:(
-
ISO 是 JSON 格式。您是否正在使用(已弃用的)JavaScriptSerializer?
标签: c# asp.net .net json webmethod