JSON serialization/deserialization 在 ASP.Net 核心

JSON serialization/deserialization in ASP.Net Core

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

我注意到 JsonResult 并且我可以用这个将数据格式化为 JSON,但是我该如何反序列化?

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

您可以使用 Newtonsoft.Json,它是 Microsoft.AspNet.Mvc.ModelBinding 的依赖项,Microsoft.AspNet.Mvc.ModelBindingMicrosoft.AspNet.Mvc 的依赖项。因此,您不需要在 project.json.

中添加依赖项
#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);

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

更新ASP.Net核心3.0

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

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

首先,使用 System.Text.Json.Serialization 命名空间中的 JsonSerializer class。有关信息和示例,请参阅 documentation

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

    services.AddMvc()
        .AddNewtonsoftJson();

阅读 Json.NET support in Migrate from ASP.NET Core 2.2 to 3.0 Preview 2 了解更多信息。

.net 核心

using System.Text.Json;

###要序列化

var jsonStr = JsonSerializer.Serialize(MyObject)

###反序列化

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

有关排除属性和空值的更多信息,请查看 This Microsoft site