.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 是不是具有将持久对象的副本添加到重复数组的内置方法