小编典典

将列表序列化为 JSON

all

我有一个看起来像这样的对象模型:

public MyObjectInJson
{
   public long ObjectID {get;set;}
   public string ObjectInJson {get;set;}
}

该属性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并获得相同的结果。我该怎么做?


阅读 72

收藏
2022-06-09

共1个答案

小编典典

如果使用 .Net Core 3.0 或更高版本;

默认使用内置System.Text.Json解析器实现。

例如

using System.Text.Json;

var json = JsonSerializer.Serialize(aList);

或者,可以使用其他不太主流的选项,例如Utf8Json解析器和Jil:这些可能会提供卓越的性能,如果你真的需要它,但你需要安装它们各自的包。

如果使用 .Net Core 2.2 或更早版本卡住;

默认使用 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 包管理器 –> 包管理器控制台)将其添加到您的项目中:

PM> Install-Package Newtonsoft.Json

文档:序列化集合

仅供参考,这是多年前的原始答案;

// you need to reference System.Web.Extensions

using System.Web.Script.Serialization;

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);
2022-06-09