首頁 >後端開發 >C++ >Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?

Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?

Barbara Streisand
Barbara Streisand原創
2025-01-05 06:28:12431瀏覽

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