.NET 中的 JavascriptSerializer 能否将列表序列化为 JSON?
假设您的对象模型中包含 MyObjectInJson
,其属性 ObjectInJson
存储嵌套列表的序列化版本。目前,您正在手动序列化列表,如下所示:
<code class="language-csharp">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();</code>
JavascriptSerializer
是否可以实现相同的结果?
JavascriptSerializer 的替代方案
对于 .NET 6.0 及更高版本,建议使用内置的 System.Text.Json
解析器。它可以高效地序列化列表,无需反射,如下所示:
<code class="language-csharp">using System.Text.Json; using System.Text.Json.Serialization; var aList = new List<myobjectinjson> { new(1, "1"), new(2, "2") }; var json = JsonSerializer.Serialize(aList, Context.Default.ListMyObjectInJson); Console.WriteLine(json); return; public record MyObjectInJson ( long ObjectId, string ObjectInJson ); [JsonSerializable(typeof(List<myobjectinjson>))] internal partial class Context : JsonSerializerContext { }</code>
对于之前的 .NET 版本(例如,Core 2.2 及更早版本),Newtonsoft JSON.Net 是一个可行的替代方案:
<code class="language-csharp">using Newtonsoft.Json; var json = JsonConvert.SerializeObject(aList);</code>
如有必要,请考虑安装该软件包:
<code>PM> Install-Package Newtonsoft.Json</code>
为了便于参考,提供了使用 JavaScriptSerializer
的原始方法:
<code class="language-csharp">// 需要引用 System.Web.Extensions using System.Web.Script.Serialization; var jsonSerialiser = new JavaScriptSerializer(); var json = jsonSerialiser.Serialize(aList);</code>
以上是JavascriptSerializer 可以在 .NET 中将列表序列化为 JSON 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!