ASP.Net Core 中的 JSON 序列化/反序列化
Posted
技术标签:
【中文标题】ASP.Net Core 中的 JSON 序列化/反序列化【英文标题】:JSON serialization/deserialization in ASP.Net Core 【发布时间】:2015-04-24 07:39:33 【问题描述】:既然没有javascriptSerializer
,那么可以用什么原生实现来处理呢?
我注意到JsonResult
,我可以用它将数据格式化为 JSON,但是我该如何反序列化?
或者我在project.json
中缺少一些依赖项?
【问题讨论】:
【参考方案1】:您可以使用Newtonsoft.Json
,它是Microsoft.AspNet.Mvc.ModelBinding
的依赖关系,它是Microsoft.AspNet.Mvc
的依赖关系。因此,您无需在 project.json 中添加依赖项。
#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);
注意,使用 WebAPI 控制器不需要处理 JSON。
更新 ASP.Net Core 3.0
Json.NET 已从 ASP.NET Core 3.0 共享框架中删除。
您可以在高性能 Utf8JsonReader
和 Utf8JsonWriter
之上使用新的 JSON 序列化程序层。它将对象从 JSON 反序列化并将对象序列化为 JSON。内存分配保持最小,包括支持异步读取和写入 JSON 流。
要开始使用,请使用 System.Text.Json.Serialization
命名空间中的 JsonSerializer
类。有关信息和示例,请参阅documentation。
在 ASP.NET Core 3.0 项目中使用 Json.NET:
添加对Microsoft.AspNetCore.Mvc.NewtonsoftJson的包引用 更新 ConfigureServices 以调用 AddNewtonsoftJson()。 services.AddMvc()
.AddNewtonsoftJson();
阅读Migrate from ASP.NET Core 2.2 to 3.0 Preview 2 中的Json.NET support 了解更多信息。
【讨论】:
现在 AspNetCore.Mcv 不再依赖 Newtonsoft.JSON 了。用于序列化的 Microsoft.AspNet.Mvc.Formatters.Json 程序集。 @RomanPokrovskij, wrong, :Microsoft.AspNetCore.Mvc.Formatters.Json
依赖于 Microsoft.AspNetCore.JsonPatch
依赖于 Newtonsoft.Json
9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json, nuget.org/packages/Microsoft.AspNetCore.JsonPatch
也可以使用 JsonConvert.DeserializeObject.net 核心
using System.Text.Json;
###要序列化
var jsonStr = JsonSerializer.Serialize(MyObject)
###反序列化
var weatherForecast = JsonSerializer.Deserialize<MyObject>(jsonStr);
有关排除属性和空值的更多信息,请查看 This Microsoft site
【讨论】:
你知道如何将json反序列化为动态类型吗? 请注意 System.Text.Json 是一个“有损”序列化程序,不会包含基类上的属性。以上是关于ASP.Net Core 中的 JSON 序列化/反序列化的主要内容,如果未能解决你的问题,请参考以下文章
每个请求的 ASP.NET Core API JSON 序列化程序设置
asp.net core序列化json配置,适用于mvc,webapi
asp.net core序列化json配置,适用于mvc,webapi