【问题标题】:JSON serialization/deserialization in ASP.Net CoreASP.Net Core 中的 JSON 序列化/反序列化
【发布时间】:2015-04-24 07:39:33
【问题描述】:

既然没有JavaScriptSerializer,那么可以用什么原生实现来处理呢?

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

或者我在project.json 中缺少一些依赖项?

【问题讨论】:

    标签: c# json asp.net-core


    【解决方案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 共享框架中删除。

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

    要开始使用,请使用 System.Text.Json.Serialization 命名空间中的 JsonSerializer 类。有关信息和示例,请参阅documentation

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

        services.AddMvc()
            .AddNewtonsoftJson();
    

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

    【讨论】:

    【解决方案2】:

    .net 核心

    using System.Text.Json;

    ###要序列化

    var jsonStr = JsonSerializer.Serialize(MyObject)
    

    ###反序列化

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

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

    【讨论】:

    • 你知道如何将json反序列化为动态类型吗?
    • 请注意 System.Text.Json 是一个“有损”序列化程序,不会包含基类上的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多