91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

靖西县| 肇东市| 丘北县| 怀远县| 长岛县| 丰镇市| 贵南县| 泸西县| 平潭县| 玉门市| 永修县| 周至县| 凌源市| 湛江市| 万年县| 黑水县| 康平县| 景谷| 卫辉市| 集贤县| 独山县| 正镶白旗| 西畴县| 镇宁| 西城区| 出国| 翁牛特旗| 公主岭市| 利辛县| 大庆市| 凤山市| 岳阳市| 年辖:市辖区| 玉田县| 彩票| 洪雅县| 周宁县| 霍州市| 武汉市| 文水县| 阜南县|