.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中文網其他相關文章!