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