[NET Core] 3.1版本 Json 正反序列化与过去版本的差异

[NET Core] 3.1版本 Json 正反序列化与过去版本的差异


前言

写这篇文章为NET Core 3.1发布约半年後(2020-06)的统整,今日发布於此故作为纪录与供其他同好参考
今年将发布的.NET 6若有在这块议题异动,再新增新的区块做差异比较

1.物件属性的Attribute改变

NET Core 2.1 的物件Json转换是透过 Newtonsoft.Json 进行物件的正反序列化动作

using Newtonsoft.Json;

    public class Student
    {
        [JsonProperty("studentName")]
        public string Name { get; set; }

        [JsonProperty("studentAge")]
        public int Age { get; set; }
    }

但是在 NET Core 3.1 正式发布版本 已经非支援 Newtonsoft.Json 而是微软自己开发内建的 Text.Json.Serialization

using System.Text.Json.Serialization;

    public class Student
    {
        [JsonPropertyName("studentName")]
        public string Name { get; set; }

        [JsonPropertyName("studentAge")]
        public int Age { get; set; }
    }

其中在model 物件或属性的Json格式部分已经从 JsonProperty() 调整成 JsonPropertyName()

2.序列化与反序列化的改变

NET Core 2.1 是物件与字串的正反序列化方式():

using Newtonsoft.Json;

string resultStr = JsonConvert.SerializeObject(student);
Student student = JsonConvert.DeserializeObject<Student>(resultStr);

NET Core 3.1 的改变是:

using System.Text.Json.Serialization;

string resultStr = JsonSerializer.Serialize(student);
Student student = JsonSerializer.Deserialize<Student>(resultStr);
tags: netcore modelvalidate WebAPI Json

<<:  [NET Core]Epplus於linux环境下无预设lib的报错与解决

>>:  ISO 15408&SAMM&CMMI&FOCI

【PHP Telegram Bot】Day02 - Telegram 聊天机器人原理

今天要来讲讲机器人是怎麽运作的 Client-Server 架构 这是一种网路架构,网页大部分都是...

【C++】String and Number Reverse

Reverse ,看似一个简单的功能,但它却出现在许多公司的面试题库。 那我们直接来看它是如何实现的...

iOS APP 开发 OC 第十五天,网路请求(请求方式对比,缓存策略,请求时长)

tags: OC 30 day 获取网路数据的两种方式: 方式一:NSData 方法: 获取JSON...

Day 15: GCP-Storage

Doc https://cloud.google.com/storage/docs/storage-...