谁能解释一下 ASP.NET 如何处理从类对象到 WebMethods 中的 JSON 对象的转换?
例如,您有以下 WebMethod,它返回一个Person
object:
[WebMethod]
public static Person GetPerson()
{
Person p = new Person()
{
Id = 1,
Name = "Test"
};
return p;
}
在我调用 WebMethod 的 jQuery 中,我得到一个包含 json 对象的响应。
ASP.NET 是如何自动完成此操作的?它是否使用JavaScriptSerializer
class?
您还会看到很多使用 JSON 转换器将类对象转换为 json 对象的示例。为什么是这样?是不是因为JavaScriptSerializer
它使用的类及其糟糕的性能还是......?
ASP.NET 是如何自动完成此操作的?
基本上,Web 和 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();
}
您将失去内容协商(除非您通过检查请求标头手动实现它),但您可以更好地控制其序列化方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)