【问题标题】:Serializing a subsonic class to JSON将亚音速类序列化为 JSON
【发布时间】:2009-10-12 04:35:55
【问题描述】:

问题是,我如何将亚音速类序列化为 JSON。虽然我可以手动创建 JSON 对象,但我需要一些方法来自动创建。

任何建议都会很棒,因为我真的不想手动执行此操作。 能否请您推荐一个 can 库来帮助进行 JSON 序列化。

顺便说一句,我在 ASP.Net 2.0 中完成所有这些操作

【问题讨论】:

    标签: c# asp.net json


    【解决方案1】:

    你看过 JavaScriptSerializer 类吗?它将创建 .NET 类型的 JSON 版本,包括任何公共属性和 __type 属性,以便在必要时可以重构/反序列化对象。

    WebMethods 也不返回 JSON,这使得从 AJAX 向服务器来回发送对象非常方便。

    编辑:添加了一些示例代码以响应 OP 的 cmets。

    http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

    public partial class _Default : Page 
    {
      [WebMethod]
      public static string GetDate()
      {
        return DateTime.Now.ToString();
      }
    }
    

    上面的GetDate()方法是一个webmethod。请注意,它应用了 [WebMethod] 属性,并且它是 static。请注意,每次调用其中一个 webMethod 时,webMethod 所在的页面都会调用它的 page_load() 方法。相应地对您的页面进行编码。

    要从 JavaScript 调用 webMethod,可以使用 jQuery:

    $.ajax({
          type: "POST",
          url: "Default.aspx/GetDate",
          data: "{}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function(result) {
            // Replace the div's content with the page method's return.
    
            alert('Received from webmethod: '+result.d);
          }
        });
    

    此处的示例 webMethod 返回一个字符串,但几乎可以返回任何对象类型。在 SO 和 .NET 中有很多关于使用 webMethods 的很好的参考资料。

    如果您不需要 webMethod 的强大功能,而只想将对象序列化为 JSON,则只需使用 JSON 序列化器:

    public string MyClassToJson(MyClass mc)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
    
        string serializedObject = serializer.Serialize(mc);
    
        return serializedObject;
    }
    

    【讨论】:

    • 你指的是什么 WebMethods 可能对我也有帮助
    • WebMethod 是在 ASP.NET 页面内声明的静态方法,旨在从客户端脚本调用。它类似于 Web 服务 (.asmx) 中的方法,但它是在常规 .aspx 页面内声明的。我在上面的回复中输入了一些额外的参考资料。
    • 感谢老兄的真棒信息,我发现使用 JSON.Net 更容易,只需要以下字符串 output = JsonConvert.SerializeObject(myClass);我还没有测试过你的做法,但会以任何方式将其标记为完成
    【解决方案2】:

    我会查看Json.NET:

    Json.NET 库使工作 使用 JavaScript 和 JSON 格式 .NET 中的简单数据。快速阅读和 使用 JsonReader 编写 JSON 和 JsonWriter 或序列化您的 .NET 具有单个方法调用的对象 使用 JsonSerializer。

    DataContractJsonSerializer:

    使用DataContractJsonSerializer 用于序列化类型实例的类 到 JSON 文档中并 将 JSON 文档反序列化为 类型的实例。例如,你 可以创建一个名为 Person 的类型 包含本质的属性 数据,例如姓名和地址。你 然后可以创建和操作 Person 类的实例和 将其所有属性值写入 JSON 文档供以后检索。 这个 JSON 文档可以在以后 反序列化为Person 类 或具有同等学历的其他班级 数据合约。

    【讨论】:

    • 我看过 Json.Net 但它仍然是一个非常手动的过程,我必须手动创建我的 Json 对象。我将在 DataContractJsonSerializer 上获得一个战利品,看看它是否有效,但它似乎是我正在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2021-06-02
    • 2021-12-18
    相关资源
    最近更新 更多