json表达式来获取确切的文件路径

时间:2017-10-30 10:34:28

标签: json

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文件?

2 个答案:

答案 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表达式上应用过滤器表达式

@ 是当前元素