ASP.Net 内核中的 JSON 序列化/反序列化

因为没有 JavaScriptSerializer,所以可以使用什么本机实现来处理这个问题?

我注意到了 JsonResult,我可以用它将数据格式化为 JSON,但是如何反序列化呢?

或者可能我在 project.json中遗漏了一些依赖项?

233011 次浏览

你可以使用 Newtonsoft.Json,它是 Microsoft.AspNet.Mvc.ModelBinding的依赖项,也是 Microsoft.AspNet.Mvc的依赖项。因此,不需要在 project.json 中添加依赖项。

#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);

注意,使用 WebAPI 控制器不需要处理 JSON。

更新 ASP.Net 核心3.0

已经从 ASP.NET Core 3.0共享框架中删除了 Json.NET

您可以在高性能 Utf8JsonReaderUtf8JsonWriter之上使用新的 JSON 序列化器层。它从 JSON 反序列化对象并将对象序列化为 JSON。内存分配保持最小,并且支持使用 Stream 异步读写 JSON。

首先,在 System.Text.Json.Serialization名称空间中使用 JsonSerializer类。

在 ASP.NET Core 3.0项目中使用 Json.NET:

  • 微软。 AspNetCore添加包引用
  • 更新 ConfigureServices 以调用 AddNewtonsoftJson ()。
    services.AddMvc()
.AddNewtonsoftJson();

阅读 从 ASP.NET Core 2.2迁移到3.0 Preview 2中的 对 Json.NET 的支持以获得更多信息。

. net core

using System.Text.Json;

连载

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserialize

var weatherForecast = JsonSerializer.Deserialize<MyObject>(jsonStr);

有关排除属性和空值的详细信息,请查看 这个微软网站