【发布时间】:2018-09-25 16:39:57
【问题描述】:
我想选择属性名称中具有特定匹配项的所有元素。
例如,此json中名称以'pass'开头的所有属性:
{
"firstName": "John",
"lastName" : "doe",
"age" : 50,
"password" : "1234",
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888",
"password": "abcd"
},
{
"type" : "home",
"number": "0123-4567-8910",
"password": "fghi"
}
]
}
会产生这样的结果:
[
"1234",
"abcd",
"fghi"
]
我不想按值过滤,只按属性名称。可以使用jsonpath吗?
我用的是Newtonsoft.Json.Linq的SelectTokens(string path)方法
【问题讨论】:
-
看起来不行,
root.SelectTokens("..pass*")不起作用,请参阅dotnetfiddle.net/3vJl8y。我能找到的最接近的是数组切片运算符root.SelectTokens("..['password','pass']"),请参阅dotnetfiddle.net/QozjnQ。否则,您可以使用DescendantsAndSelf(),如图所示here 或here。