XPath/JSONPath 搜索数组
XPath/JSONPath search of arrays
我们的 REST API 正在返回一个嵌套对象数组。使用 XPath 或 JSONPath,我想提取每个顶级数组对象的 id 元素,但不提取子元素的 id 元素。
[
{
"id":"1",
"child":{
"id":"a"
}
},
{
"id":"2",
"child":{
"id":"b"
}
}
]
预期输出为 1、2 而不是 1、a、2、b。
任何人都可以帮助查询语法吗?我在 http://jsfiddle.net/dqvrfvc1/2/
有例子
尝试在特定级别选择 id
:
search = JSON.search(data, '/*/*/id')
在此处查看更新:http://jsfiddle.net/dqvrfvc1/5/
如果我们将 XML 转储到控制台 (console.log(JSON.toXML(data));
),我们会看到:
<d:data xmlns:d="defiant-namespace" d:constr="Array" d:mi="9">
<d:item d:mi="4">
<id d:constr="String" d:mi="1">1</id>
<child d:mi="3">
<id d:constr="String" d:mi="2">a</id>
</child>
</d:item>
<d:item d:mi="8">
<id d:constr="String" d:mi="5">2</id>
<child d:mi="7">
<id d:constr="String" d:mi="6">b</id>
</child>
</d:item>
</d:data>
这意味着我们可以更具体地使用:
而不是 /*/*/id
search = JSON.search(data, '/d:data/d:item/id')
注意:无法选择命名空间,因此似乎不需要将 d:
命名空间前缀绑定到 defiant-namespace
uri。
此外,查看 http://defiantjs.com 的 "XPATH EVALUATOR" 部分并在 XML 和 JSON 视图之间切换以查看 JSON 是如何表示的在 XML。这将帮助您了解数据结构以及在什么级别可以找到 id
。
鉴于您的标签中有 jmeter
,这里有一个解决方案:
JSON 路径表达式应如下所示:$[*].id
演示:
参考文献:
您提到了 XPath:在 XPath 3.1 中,这是
parse-json($data)?*?id
我们的 REST API 正在返回一个嵌套对象数组。使用 XPath 或 JSONPath,我想提取每个顶级数组对象的 id 元素,但不提取子元素的 id 元素。
[
{
"id":"1",
"child":{
"id":"a"
}
},
{
"id":"2",
"child":{
"id":"b"
}
}
]
预期输出为 1、2 而不是 1、a、2、b。
任何人都可以帮助查询语法吗?我在 http://jsfiddle.net/dqvrfvc1/2/
有例子尝试在特定级别选择 id
:
search = JSON.search(data, '/*/*/id')
在此处查看更新:http://jsfiddle.net/dqvrfvc1/5/
如果我们将 XML 转储到控制台 (console.log(JSON.toXML(data));
),我们会看到:
<d:data xmlns:d="defiant-namespace" d:constr="Array" d:mi="9">
<d:item d:mi="4">
<id d:constr="String" d:mi="1">1</id>
<child d:mi="3">
<id d:constr="String" d:mi="2">a</id>
</child>
</d:item>
<d:item d:mi="8">
<id d:constr="String" d:mi="5">2</id>
<child d:mi="7">
<id d:constr="String" d:mi="6">b</id>
</child>
</d:item>
</d:data>
这意味着我们可以更具体地使用:
而不是/*/*/id
search = JSON.search(data, '/d:data/d:item/id')
注意:无法选择命名空间,因此似乎不需要将 d:
命名空间前缀绑定到 defiant-namespace
uri。
此外,查看 http://defiantjs.com 的 "XPATH EVALUATOR" 部分并在 XML 和 JSON 视图之间切换以查看 JSON 是如何表示的在 XML。这将帮助您了解数据结构以及在什么级别可以找到 id
。
鉴于您的标签中有 jmeter
,这里有一个解决方案:
JSON 路径表达式应如下所示:$[*].id
演示:
参考文献:
您提到了 XPath:在 XPath 3.1 中,这是
parse-json($data)?*?id