【发布时间】:2015-01-18 20:00:16
【问题描述】:
我是 Json.NET 的新手,尝试使用 SelectToken 函数。
我的测试 JSON:
{
"Root": {
"aNode": {
"bNode": {
"cNode": {
"id": "myID1"
}
},
"cNode": {
"id": "myID2"
},
"dNode": {
"cNode": [
{
"id": "myID3"
},
{
"id": "myID4"
}
]
}
},
"cNode": {
"id": "myID5"
}
}
}
现在,我正在尝试使用以下代码来获取特定对象:
JObject obj = JsonConvert.DeserializeObject<JObject>(jsonTxt);
//Not found
var myID1 = obj.SelectToken("..cNode[?(@.id=='myID1')]");
//Not found
var myID2 = obj.SelectToken("..cNode[?(@.id=='myID2')]");
//Found
var myID3 = obj.SelectToken("..cNode[?(@.id=='myID3')]");
//Found
var myID4 = obj.SelectToken("..cNode[?(@.id=='myID4')]");
//Not found
var myID5 = obj.SelectToken("..cNode[?(@.id=='myID5')]");
为什么我会得到这些(对我而言)奇怪的结果?
我认为我应该在每种情况下都获得具有特定 ID 的 cNode 对象,而不仅仅是 myID3 和 myID4。这里有什么问题?
【问题讨论】: