首页 >后端开发 >C++ >Json.Net 可以在不修改源代码的情况下配置私有 Setter 行为吗?

Json.Net 可以在不修改源代码的情况下配置私有 Setter 行为吗?

Barbara Streisand
Barbara Streisand原创
2025-01-05 06:28:12466浏览

Can Json.Net Configure Private Setter Behavior Without Modifying Source Code?

在 Json.Net 中配置私有 setter 行为

虽然 Json.Net 提供了一个属性来寻址私有 setter,但此功能的默认选项经常受到追捧。在没有修改源代码的情况下,出现了问题:是否有可配置的设置来实现此行为?

答案

选项 1:使用 [ JsonProperty] 属性

而不是依赖于特定属性,只需使用[JsonProperty] 属性用于在反序列化期间填充只读属性。示例:

[JsonProperty]
public Guid? ClientId { get; private set; }

选项 2:基于构造函数的解决方案

另一种方法是创建一个参数与私有属性匹配的构造函数:

public class Foo
{
    public string Bar { get; }

    public Foo(string bar)
    {
        Bar = bar;
    }
}

这可以实现以下目的:

string json = "{ \"bar\": \"Stack Overflow\" }";

var deserialized = JsonConvert.DeserializeObject<Foo>(json);
Console.WriteLine(deserialized.Bar); // Stack Overflow

这种方法的优点包括:

  • 不需要属性的归属。
  • 与两者的兼容性 { get;私人套装; } 和 { 得到; }.

以上是Json.Net 可以在不修改源代码的情况下配置私有 Setter 行为吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn