在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
這種方法的優點包括:
以上是Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!