gpt4 book ai didi

c# - 将 json 反序列化为具有默认私有(private)构造函数的类的 C# 对象

转载 作者:可可西里 更新时间:2023-11-01 03:04:36 26 4
gpt4 key购买 nike

我需要为后续类(class)反序列化 json。

public class Test
{
public string Property { get; set; }

private Test()
{
//NOTHING TO INITIALIZE
}

public Test(string prop)
{
Property = prop;
}
}

我可以像这样创建一个测试实例

var instance = new Test("Instance");

考虑我的 json 类似

"{  "Property":"Instance" }"

我应该如何创建 Test 类的对象,因为我的默认构造函数是私有(private)的,并且我正在获取 Property 为 NULL 的对象

我正在使用 Newtonsoft Json 解析器。

最佳答案

您可以通过使用 [JsonConstructor] 属性标记 Json.Net 来调用私有(private)构造函数:

[JsonConstructor]
private Test()
{
//NOTHING TO INITIALIZE
}

请注意,序列化程序在调用构造函数后仍将使用公共(public) setter 来填充对象。


另一种可能的选择是使用 ConstructorHandling 设置:

JsonSerializerSettings settings = new JsonSerializerSettings
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};

Test t = JsonConvert.DeserializeObject<Test>(json, settings);

关于c# - 将 json 反序列化为具有默认私有(private)构造函数的类的 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24243738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com