如何将列表序列化为JSON?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

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

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并得到相同的结果。我将如何做到这一点?

提问于
用户回答回答于
// you need to reference System.Web.Extensions

using System.Web.Script.Serialization;

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);

请注意:

时代已经改变,我会默认使用JSON.Net作为我的第一选择JSON解析器。如果它是WebAPI的正确选择,它是我的正确选择。

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

文档:序列化集合

扫码关注云+社区