C#使用dynamic類型訪問JObject對象
dynamic是C#里面的動態(tài)類型,可在未知類型的情況訪問對應的屬性,非常靈活和方便。
使用Json.Net可以把一個Json字符串轉(zhuǎn)換成一個JObject對象,如果有已知強類型,如果有已知對應的強類型,可以直接轉(zhuǎn)成對應的類型。但如果沒有,要訪問Json里面對應的數(shù)據(jù)的時候,就顯得比較麻煩。我們可以借助DynamicObject來訪問對應的屬性。
DynamicObject
我們要創(chuàng)建一個動態(tài)類,用于訪問JObject,代碼如下:
public class JObjectAccessor : DynamicObject { JToken obj; public JObjectAccessor(JToken obj) { this.obj = obj; } public override bool TryGetMember(GetMemberBinder binder, out object result) { result = null; if (obj == null) return false; var val = obj[binder.Name]; if (val == null) return false; result = Populate(val); return true; } private object Populate(JToken token) { var jval = token as JValue; if (jval != null) { return jval.Value; } else if (token.Type == JTokenType.Array) { var objectAccessors = new List<object>(); foreach (var item in token as JArray) { objectAccessors.Add(Populate(item)); } return objectAccessors; } else { return new JObjectAccessor(token); } } }
接下來就可以開始使用它了:
string json = @"{'name': 'Jeremy Dorn','location': {'city': 'San Francisco','state': 'CA'},'pets': [{'type': 'dog','name': 'Walter'}]}"; JObject jobj = JObject.Parse(json); dynamic obj = new JObjectAccessor(jobj); Console.WriteLine($"{obj.name}: {obj.location.city} {obj.location.state}"); Console.WriteLine($"{obj.pets[0].type}: {obj.pets[0].name}");
運行一下程序,看一下輸出結(jié)果:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中使用IrisSkin2.dll美化WinForm程序界面的方法
這篇文章主要介紹了c#中使用IrisSkin2.dll美化WinForm程序界面的實現(xiàn)方法,需要的朋友可以參考下2013-05-05C#讀取與寫入txt文件內(nèi)容的實現(xiàn)方法
在 C# 中讀取和寫入文本文件內(nèi)容是一個常見的任務,本文主要介紹了使用幾種不同方法讀取和寫入文本文件的示例,并通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-08-08深入探討C#中的const、readonly關(guān)鍵字
這篇文章主要介紹了深入探討C#中的const、readonly關(guān)鍵字,本文可以幫助你深刻理解這兩個關(guān)鍵字,而且是面試中最可能面試到的問題哦,需要的朋友可以參考下2014-08-08C#調(diào)用WinAPI部分命令的方法實現(xiàn)
本文主要介紹了C#調(diào)用WinAPI部分命令的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01C#?WPF實現(xiàn)數(shù)據(jù)記錄導出excel
這篇文章主要為大家詳細介紹了C#如何基于WPF實現(xiàn)數(shù)據(jù)記錄導出excel的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-11-11macOS系統(tǒng)下Vscode的python配置教程
這篇文章主要介紹了macOS系統(tǒng)下Vscode的python配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04