JSON数据如下
{"ServerFiles": [
{"filepath": "in/b1_30102017d.ini"},
{"filepath": "in/b1_30102017d.log"},
{"filepath": "in/b1_30102017d.txt"},
{"filepath": "out/b1_30102017d.log"},
{"filepath": "out/b1_30102017d.csv"}
]}
我想获取ini文件的路径。这工作
$.ServerFiles[*].filepath[0].
但是文件在windows和linux上有所不同,这意味着$ .ServerFiles []。filepath [0]在Windows上返回csv文件而不是ini文件。在linux上相同的$ .ServerFiles []。filepath [0]返回ini文件,所以我不想用$ .ServerFiles [*]。filepath [0]进行硬编码。是否还有其他JSON表达式来检索ini文件?
答案 0 :(得分:0)
尝试以下列方式迭代json:
a = {"ServerFiles": [
{"filepath": "in/b1_30102017d.ini"},
{"filepath": "in/b1_30102017d.log"},
{"filepath": "in/b1_30102017d.txt"},
{"filepath": "out/b1_30102017d.log"},
{"filepath": "out/b1_30102017d.csv"}
]}
for(i=0;i<a['ServerFiles'].length;i++){
if(a["ServerFiles"][i]["filepath"].indexOf('.ini')!== -1)
{
return a["ServerFiles"][i]["filepath"];
}
}
答案 1 :(得分:0)
如果您使用event filters,则以下代码应该有效:
$.ServerFiles[?(@.filepath =~ /.*ini/i)]
[] 是下标运算符。 XPath使用它来迭代元素集合。
?()在JSONPath表达式上应用过滤器表达式
@ 是当前元素