国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#使用dynamic類型訪問(wèn)JObject對(duì)象

2020-01-24 00:18:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

dynamic是C#里面的動(dòng)態(tài)類型,可在未知類型的情況訪問(wèn)對(duì)應(yīng)的屬性,非常靈活和方便。

使用Json.Net可以把一個(gè)Json字符串轉(zhuǎn)換成一個(gè)JObject對(duì)象,如果有已知強(qiáng)類型,如果有已知對(duì)應(yīng)的強(qiáng)類型,可以直接轉(zhuǎn)成對(duì)應(yīng)的類型。但如果沒(méi)有,要訪問(wèn)Json里面對(duì)應(yīng)的數(shù)據(jù)的時(shí)候,就顯得比較麻煩。我們可以借助DynamicObject來(lái)訪問(wèn)對(duì)應(yīng)的屬性。

DynamicObject

我們要?jiǎng)?chuàng)建一個(gè)動(dòng)態(tài)類,用于訪問(wèn)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);    }  }}

接下來(lái)就可以開(kāi)始使用它了:

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}");

運(yùn)行一下程序,看一下輸出結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镶黄旗| 洛阳市| 辉南县| 凯里市| 蒙城县| 永平县| 德令哈市| 烟台市| 杭州市| 南华县| 常德市| 恭城| 新化县| 新绛县| 修水县| 盐池县| 栾城县| 滕州市| 始兴县| 阳信县| 蓬安县| 德昌县| 丽江市| 威信县| 宁都县| 东丰县| 邳州市| 井陉县| 广丰县| 图片| 瑞丽市| 郯城县| 固镇县| 顺义区| 鹤山市| 湖北省| 牡丹江市| 连平县| 屯昌县| 禄丰县| 滨州市|