WebMethod 自动将类对象作为 JSON 返回
本文关键字:JSON 返回 对象 WebMethod | 更新日期: 2023-09-27 18:33:24
谁能解释一下 ASP.NET 如何处理WebMethods中从类对象到JSON对象的转换?
例如,您有以下返回Person
对象的 WebMethod:
[WebMethod]
public static Person GetPerson()
{
Person p = new Person()
{
Id = 1,
Name = "Test"
};
return p;
}
在我的jQuery中,我调用WebMethod,我得到一个包含json对象的响应。
ASP.NET 是如何自动做到这一点的?它是否使用 JavaScriptSerializer
类?
此外,您还会看到许多使用 JSON 转换器将类对象转换为 json 对象的示例。这是为什么呢?是因为它使用的JavaScriptSerializer
类及其糟糕的性能还是...?
基本上,WebASP.NET 是如何自动做到这一点的?
和WebMethod之间有一些代码,它接受请求,找出它所请求的内容,找到您的WebMethod并获取结果,然后根据请求标头中可接受的格式将其序列化回客户端。
它是否使用 JavaScriptSerializer 类?
可能。我找不到任何说明它的东西。但它不使用任何第三方库。由于这是一个内置的,这是一个很好的假设。
您还看到很多使用 JSON 转换器进行转换的示例 将类对象转换为 JSON 对象。这是为什么呢?是因为 它使用的JavaScriptSerializer类及其糟糕的性能或...
?
WebMethod 技术可能非常挑剔,有时会拒绝返回 JSON,尽管有接受标头。一种方法是执行以下操作:
[WebMethod]
public static void GetPerson()
{
Person p = new Person()
{
Id = 1,
Name = "Test"
};
HttpContext.Current.Response.ResponseType = "application/json";
HttpContext.Current.Response.Write(JsonConvert.SerializeObject(p));
HttpContext.Current.Response.End();
}
您将丢失内容协商(除非您通过检查请求标头手动实现它(,但您可以更好地控制它的序列化方式。