【问题标题】:Is there a built in way in .Net AJAX to manually serialize an object to a JSON string?.Net AJAX 中是否有内置方法可以将对象手动序列化为 JSON 字符串?
【发布时间】:2010-09-07 07:10:48
【问题描述】:

我找到了ScriptingJsonSerializationSection,但我不知道如何使用它。我可以编写一个函数来手动将对象转换为 JSON 字符串,但是由于 .Net 可以使用 <System.Web.Services.WebMethod()><System.Web.Script.Services.ScriptMethod()> 属性即时执行此操作,因此必须有一种我缺少的内置方式。

PS:使用 Asp.Net 2.0 和 VB.Net - 我把它放在标签中,但我认为人们错过了它。

【问题讨论】:

  • “使用 Asp.Net 2.0 和 VB.Net - 我把它放在标签中,但我认为人们错过了它” - 好吧,“2.0”可以解释为“不是 1.1”而不是“不是 3.x"。

标签: asp.net vb.net json serialization .net-2.0


【解决方案1】:

这应该可以解决问题

Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)

【讨论】:

  • 注意:在 .NET 3.5 JavaScriptSerializer 被标记为过时,它说要使用 DataContractJsonSerializer
  • 在 .NET 3.5 SP1 中,它又过时了!
【解决方案2】:

我想你要找的是这个类:

System.ServiceModel.Web.DataContractJsonSerializer

以下是 Rick Strahl 的示例:DataContractJsonSerializer in .NET 3.5

【讨论】:

  • 是的!你不知道我找了多久 :)
【解决方案3】:

由于 JavaScriptSerializer 类在技术上已被弃用,我相信如果您使用 3.0+,DataContractJsonSerializer 是更好的选择。

【讨论】:

  • 在 .NET 3.5 SP1 中,它又过时了!
【解决方案4】:

嗯,我目前正在使用以下扩展方法来序列化和反序列化对象:

using System.Web.Script.Serialization;

public static string ToJSON(this object objectToSerialize)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Serialize(objectToSerialize);
}

/// <typeparam name="T">The type we are deserializing the JSON to.</typeparam>
public static T FromJSON<T>(this string json)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Deserialize<T>(json);
}

我经常使用它——请注意,这个实现有点幼稚(即它存在一些潜在问题,这取决于您要序列化的内容以及您在客户端上使用它的方式,尤其是使用 DateTimes)。

【讨论】:

    【解决方案5】:

    在 System.Web.Extensions 程序集版本 3.5.0.0 中,有一个 JavaScriptSerializer 类可以处理您想要的。

    【讨论】:

      【解决方案6】:

      试试

      System.Web.Script.Serialization.JavaScriptSerializer
      

      或查看JSON.org,这里有一个完整的库列表,可以完全按照您的要求进行操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多