javascript
JSON.NET 5中的架构变更
Newtonsoft對JSON.NET進行了兩個架構升級,以使其能夠更容易地在涉及第三方庫的項目中使用。這兩個特性是默認設置和擴展數據。
\u0026#xD;\n在JSON.NET 5r5中,開發者可以使用JsonSerializerSettings類重寫序列化/反序列化選項。每次調用JsonConvert方法的時候通常都會將它作為參數傳入,或者用它創建新的JsonSerializer。
\u0026#xD;\n如果類庫想要使用新的默認模式,那么可以使用JsonSerializer.CreateDefault方法。這樣便會使用應用通過JsonConvert.DefaultSettings方法定義的默認項。如果類庫不想使用此行為,那么可以繼續正常地創建JsonSerializer的實例。
\u0026#xD;\n應該注意的是,JsonConvert.DefaultSettings方法的參數是一個Func\u0026lt;JsonSerializerSettings\u0026gt;而不是JsonSerializerSettings的實例。這意味著每次需要的時候都將創建默認JsonSerializerSettings的一個新副本。
\u0026#xD;\n另一個變化是對擴展數據的支持。這些數據在原生JSON有效負荷中有效,但不會在類結構中出現。一般來說,這會在服務器定義發生改變而客戶端尚未升級到匹配版本時發生。
\u0026#xD;\n在WCF中,可以通過IExtensibleDataObject接口獲取擴展數據。它為ExtensionDataObject類型提供了一個單獨的屬性,一個幾乎沒有什么作用的不透明類。ExtensionDataObject包含的任何數據只對數據協定序列化器有效。這意味著,它只在極其特殊的情況下才會發揮作用,例如我們將一些數據序列化,使用舊版本的代碼將其反序列化,重新序列化,接下來再次使用原始版本反序列化的情況。
\u0026#xD;\nJSON.Net將擴展數據以字串和JToken對象字典的形式暴露。該字典通過使用 [JsonExtensionData]屬性標記的屬性或域對外暴露。通過使用屬性而不是接口,開發者可以將域標記為私有以維持封裝。
\u0026#xD;\n查看英文原文:Architectural Changes in JSON.NET 5
\u0026#xD;\n感謝孫鏡濤對本文的審校。
\u0026#xD;\n給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ)或者騰訊微博(@InfoQ)關注我們,并與我們的編輯和其他讀者朋友交流。
總結
以上是生活随笔為你收集整理的JSON.NET 5中的架构变更的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 道恩股份主营业务是什么
- 下一篇: 和邦生物股票是什么公司 和邦生物是做什么