我有一个json,我想从一个复杂的对象中获取一个值。这是我的json:
{
"a1" : {
"a2" : {
"a3" : "desired_value"
}
}
}
我想获得值“期望值”。我尝试使用以下代码获取它:
var token = JToken.Parse(json);
string value = token.Value<string>("a1.a2.a3");
但是value
字符串为空。我应该在路径中输入什么内容,以便我只能阅读一次,我的意思是没有得到令牌,然后遍历它的孩子性,等等?
答案 0 :(得分:2)
您可以使用SelectToken
来通过其路径选择属性,然后从中提取值:
string value = token.SelectToken("a1.a2.a3").Value<string>();
如果找不到该路径, SelectToken
将返回null
,因此您可能需要注意这一点。
JToken.Value希望提供一个密钥,而SelectToken
支持密钥和路径(密钥是是简单路径)。您正在提供一个期望键的路径,这将导致找不到值。
为证明区别,您可以也可以像这样检索a3
的值:
token.SelectToken("a1.a2").Value<string>("a3");
我不建议这样做,但是它确实显示了路径如何涉及遍历,但是键是简单的索引器。