我有一个看起来像这样的对象模型:
public MyObjectInJson { public long ObjectID {get;set;} public string ObjectInJson {get;set;} }
该属性ObjectInJson是一个已经序列化的版本,一个包含嵌套列表的对象。目前,我正在MyObjectInJson像这样手动序列化列表:
ObjectInJson
MyObjectInJson
StringBuilder TheListBuilder = new StringBuilder(); TheListBuilder.Append("["); int TheCounter = 0; foreach (MyObjectInJson TheObject in TheList) { TheCounter++; TheListBuilder.Append(TheObject.ObjectInJson); if (TheCounter != TheList.Count()) { TheListBuilder.Append(","); } } TheListBuilder.Append("]"); return TheListBuilder.ToString();
我想知道我是否可以用这种危险代码替换JavascriptSerializer并获得相同的结果。我该怎么做?
JavascriptSerializer
默认使用内置System.Text.Json解析器实现。
System.Text.Json
例如
using System.Text.Json; var json = JsonSerializer.Serialize(aList);
或者,可以使用其他不太主流的选项,例如Utf8Json解析器和Jil:这些可能会提供卓越的性能,如果你真的需要它,但你需要安装它们各自的包。
默认使用 Newtonsoft JSON.Net 作为您的首选 JSON 解析器。
using Newtonsoft.Json; var json = JsonConvert.SerializeObject(aList);
您可能需要先安装该软件包。
PM> Install-Package Newtonsoft.Json
有关更多详细信息,请参阅并支持作为此信息来源的答案。
您也可以使用 Json.NET。只需在http://james.newtonking.com/pages/json-net.aspx下载它,提取压缩文件并将其添加为参考。
然后只需使用以下内容序列化列表(或您想要的任何对象):
using Newtonsoft.Json; string json = JsonConvert.SerializeObject(listTop10);
更新:您还可以通过 NuGet 包管理器(工具 –> NuGet 包管理器 –> 包管理器控制台)将其添加到您的项目中:
文档:序列化集合
// you need to reference System.Web.Extensions using System.Web.Script.Serialization; var jsonSerialiser = new JavaScriptSerializer(); var json = jsonSerialiser.Serialize(aList);