小编典典

将列表序列化为JSON

c#

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

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

谢谢。


阅读 328

收藏
2020-05-19

共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

有关更多详细信息,请参见并认可作为此信息来源的答案

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

// you need to reference System.Web.Extensions

using System.Web.Script.Serialization;

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);
2020-05-19