如何使Json.NET成为默认的Json序列化程序

时间:2010-08-23 21:19:25

标签: c# json serialization json.net

如果我有一个Web服务(.asmx)并且我希望它使用Json.NET来序列化我从该Web服务返回的所有对象,有没有办法做到这一点?

换句话说,我有一个这样的课:

    [JsonObject(MemberSerialization.OptOut)]
    public partial class Person
    {
        public string FirstName {get; set;}

        public string LastName {get; set;}

        [JsonIgnore]    
        public string Password {get; set;}    
    }

在我的网络服务中,我有这个:

    [WebMethod]
    public Person GetBlahPerson()
    {
        Person p = new Person();
        p.FirstName = "bob";
        p.LastName = "smith";
        p.Password = "don't tell";

        return p;
    }

如果使用jQuery我将返回类型设置为json,它将我的对象序列化为json。

是否可以通过web.config中的设置或类似方式使其使用Json.net?

1 个答案:

答案 0 :(得分:1)

只是JSON - 没有。您只能使用

重新定义整个IHttpHandlerFactory
<add verb="*" path="*.asmx" type="YourScriptHandlerFactory" validate="false"/>

但这意味着您需要使用反射回退到默认实现,或者实现System.Web.Script.Services命名空间的模拟(非常大)。

我实际上是为了其他目的而使用反射回退(集中式错误处理),因此它应该是可能的,但它需要精确度,并且在.NET版本之间会非常脆弱。

您使用的是经典的ASP.NET还是MVC?如果你使用MVC,只需使用一个控制器,它就容易多了。