我的样例代码非常简单:
using System.Text.Json.Serialization;
using Newtonsoft.Json;
public class C {
public C(string PracticeName) { this.PracticeName = PracticeName; }
public string PracticeName;
}
var x = new C("1");
var json = JsonConvert.SerializeObject(x); // returns "{\"PracticeName\":\"1\"}"
var x1 = JsonConvert.DeserializeObject<C>(json); // correctly builds a C
var x2 = System.Text.Json.Serialization.JsonSerializer.Parse<C>(json);
最后一行产生了异常:
引发异常: 'System.NullReferenceException' in System.Text.Json.dll 对象引用未设置为对象的实例。
我做错了什么?
(请注意,这是在最新的 .NET Core 3 预览版 5 上与最新的 System.Text.Json 4.6.0-preview6.19259.10。)
添加一个无参数构造函数可以避免这个异常,但是我不想/不需要一个无参数构造函数,并且 Json.Net 没有问题地解析它。是否有一种方法可以像 Json.Net 一样使用给定的构造函数进行 System.Text.Json 解析?
System.Text.Json
反序列化带有参数化构造函数的类型现在可以正常工作,参见 Deserialize anonymous type with System.Text.Json。 - dbc