如何从复杂的JObject获取价值? C#

时间:2019-01-23 20:52:38

标签: c#

我正在尝试查看是否有一种更简单的方法来从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 个答案:

答案 0 :(得分:2)

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

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)