亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#使用dynamic類型訪問JObject對象

發布時間:2020-10-12 14:01:35 來源:腳本之家 閱讀:134 作者:ZKEASOFT 欄目:編程語言

dynamic是C#里面的動態類型,可在未知類型的情況訪問對應的屬性,非常靈活和方便。

使用Json.Net可以把一個Json字符串轉換成一個JObject對象,如果有已知強類型,如果有已知對應的強類型,可以直接轉成對應的類型。但如果沒有,要訪問Json里面對應的數據的時候,就顯得比較麻煩。我們可以借助DynamicObject來訪問對應的屬性。

DynamicObject

我們要創建一個動態類,用于訪問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}");


運行一下程序,看一下輸出結果:

C#使用dynamic類型訪問JObject對象

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贺州市| 益阳市| 兴业县| 大连市| 星座| 乡城县| 吴堡县| 甘泉县| 广饶县| 太仆寺旗| 囊谦县| 禹城市| 平山县| 苍山县| 黄平县| 岗巴县| 白沙| 玉门市| 依兰县| 旌德县| 岑溪市| 资源县| 崇阳县| 新安县| 延寿县| 嘉义市| 尼玛县| 梅州市| 铁岭县| 黔南| 信丰县| 故城县| 库尔勒市| 汶上县| 贡嘎县| 海安县| 奉节县| 瓦房店市| 永城市| 阿坝| 天津市|