C# 中的 JSON 反序列化如何工作

How does JSON deserialization in C# work(C# 中的 JSON 反序列化如何工作)
本文介绍了C# 中的 JSON 反序列化如何工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我试图了解 JsonConvert.DeserializeObject<X>(someJsonString) 如何使用构造函数设置值.

使用 Newtonsoft.json公共课 X {[JsonProperty("some_Property")]公共字符串 SomeProperty {get;}[JsonProperty("some_Property_2")]公共字符串 SomeProperty2 {get;}公共 X(字符串 someProperty,字符串 someProperty2){某些属性 = 某些属性;SomeProperty2 = someProperty2;}公共静态 X parseObject(字符串 parseThisJson){JsonConvert.DeserializeObject(someJsonString);}}

在上面的代码中,我想了解 JsonConvert.DeserializeObject 是如何正确反序列化它的.json 序列化是否使用此 public X(string someProperty, string someProperty2) 构造函数?如果是这样,这个构造函数是如何调用和使用的?

如果 parseThisJson 除了 some_Property 和 some_Property_2 之外还有更多的键值对会发生什么?

解决方案

深入

TL;DR 首先,Newtonsoft.Json 创建 JsonContract.它的抽象类.它对字典、数组、对象等有不同的实现.在您的情况下,将创建 JsonObjectContract.合约包含关于反序列化类型的各种元数据.对我们来说最有趣的是: