我有一个如下所示的对象模型:

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替换这种危险代码,并得到同样的结果.

推荐答案

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

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

例如

using System.Text.Json;

var json = JsonSerializer.Serialize(aList);

或者,还有其他不太主流的选项,比如Utf8Json parser和Jil:如果你真的需要,它们可能会提供superior performance个,但你需要安装它们各自的软件包.

如果坚持使用.Net Core 2.2或更早版本;

默认使用Newtonsoft JSON.Net作为首选JSON解析器.

例如

using Newtonsoft.Json;

var json = JsonConvert.SerializeObject(aList);

您可能需要先安装软件包.

PM> Install-Package Newtonsoft.Json

欲了解更多详情,请拨打电话see and upvote the answer that is the source of this information.

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

// you need to reference System.Web.Extensions

using System.Web.Script.Serialization;

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

Asp.net相关问答推荐

502 DotNet WebApplication的网关nginx已损坏

DBSet 不包含 Where 的定义

如何以编程方式设置单元格 colored颜色 epplus?

Firefox 和 Chrome 之间 1 像素的行高差

如何在页面加载之前运行 JavaScript 代码?

如何判断 IIS 是处于 32 位还是 64 位模式

Jquery asp.net 按钮单击事件通过 ajax

无法使用单例Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor中的范围服务MyDbContext

Ef core:执行 MaxAsync 时序列不包含任何元素

如何使用 asp.net 获取 html Select 的选定值

获取页面上特定类型的所有 Web 控件

MVC5 身份验证中的......与主域之间的信任关系失败

Azure Functions 中的 DI

.NET AJAX 调用 ASMX 或 ASPX 或 ASHX?

SignalR /signalr/hubs 404 未找到

ASP.NET 身份提供程序 SignInManager 不断返回失败

协调 ASP.NET 脚本包和源映射

为在 ASP.NET Web API 中使用 User.Identity.Name 的方法编写单元测试

如何从 ASP.NET Identity 获取用户列表?

如何调试 w3wp clr.dll 错误