代码之家  ›  专栏  ›  技术社区  ›  CBC_NS

如何从复杂的Jobject中获取价值?C.*

c#
  •  0
  • CBC_NS  · 技术社区  · 7 年前

    我想看看是否有一种更简单的方法从jobject中按属性名获取值。

    编辑:在这种情况下,“someproperty”是一个动态字符串属性,它会发生更改。在下面的示例中,属性恰好落在该令牌路径下。

    // Convert object to Json, then to JObject
    var process = JObject.Parse(JsonConvert.SerializeObject(myObj));
    
    // This seems highly uncessary, but it works
    var myValue = process["Document"]["Process"]["Data"]["someProperty"];
    
    // When I do the following I get null
    var myValue = process["someProperty"].Value<string>();
    
    // This also returns null
    var myValue = process.GetValue("someProperty");
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Derviş Kayımbaşıoğlu    7 年前

    最快和最简单的方法是使用动态

    dynamic dyn = await GetStep(message.EventId);
    var myValue = dyn.Document.Process.Data.someProperty ;
    

    或者可以使用jpath

    var process = JObject.Parse(JsonConvert.SerializeObject(myObj));
    JToken acme = o.SelectToken("$..someProperty"); // <-- less safe (multiple matches may occur)