.Net AJAX 中是不是有内置方法可以将对象手动序列化为 JSON 字符串?

Posted

技术标签:

【中文标题】.Net AJAX 中是不是有内置方法可以将对象手动序列化为 JSON 字符串?【英文标题】: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"。 【参考方案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,这里有一个完整的库列表,可以完全按照您的要求进行操作。

【讨论】:

以上是关于.Net AJAX 中是不是有内置方法可以将对象手动序列化为 JSON 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 是不是具有将持久对象的副本添加到重复数组的内置方法

尝试在.net核心中绑定下拉列表时在ajax jquery中获取空对象列表

.net中ajax有啥用法?

ajax 在 asp.net 中返回一个未定义的对象

ASP.NET7大内置对象以及对应功能?

内置对象