WebMethod 自动将类对象返回为 JSON

2024-01-05

谁能解释一下 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(使用前将#替换为@)

WebMethod 自动将类对象返回为 JSON 的相关文章

随机推荐