首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有无限过滤链的JQ对象选择

问没有无限过滤链的JQ对象选择
EN

Stack Overflow用户
提问于 2018-05-02 16:21:17
回答 1查看 116关注 0票数 1

我在使用jq (1.5)解析深度嵌套的JSON结构时遇到了困难,我觉得我使用它是错误的。以这个示例JSON输入为例:

代码语言:javascript
复制
{
 "a":[],
 "b":[
  {"x":"bar", "s":"FX", "f":["blorg","blarg","blurb"], "v":true},
  {"x":"bar", "s":"EX", "f":["blorg","blarg","bloob"], "v":false},
  {"x":"bar", "s":"XT", "f":["blorg","blart","bloop"], "v":true},
  {"x":"bar", "s":"IJ", "f":["blorg","bleep","glarp"], "v":true},
  {"x":"foo", "s":"IX", "f":["porg","parg","pork","peep"], "v":true},
  {"x":"baz", "s":"AB", "f":["zing","zang","zoop"], "v":false}
  ],
 "c":[]
}
  • 在list b中提取x为"bar“的对象很简单: jq '.["b"][] | select(.x == "bar")' < file.json
  • 要进一步限制具有特定值s的对象,也很简单: jq '.["b"][] | select(.x == "bar" and .s == "FX")' < file.json

但是,如果我想应用正则表达式测试,或者任何其他需要字符串输入的测试(请记住,我仍然需要对象输出),我想我别无选择,只能使用链式过滤器。例如..。

  • 为了限制s以"X“结尾的对象,不幸的是,在jqjq '.["b"][] | select(.x == "bar" and .s.endswith("X"))' < file.json中,下面的内容不是 相反,我认为我必须这样做: jq '.["b"][] | select(.x == "bar") | select(.s | endswith("X"))' < file.json
  • 与s类似,包含"X": jq '.["b"][] | select(.x == "bar") | select(.s | test("X"))' < file.json

如果我总是执行布尔型AND,那么这很好,但是如果我想要执行一个OR呢?例如,jq程序是用来获取x是"bar“OR s的对象的什么程序,以"X”结尾?jq有|OR|过滤器吗?

代码语言:javascript
复制
jq '.["b"][] | select(.x == "bar") |OR| select(.s | endswith("X"))' < file.json

还是我做错了?我是否试图重新发明一些标准的jq算法来选择对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 16:44:53

直截了当地(在select函数中指定所有条件):

代码语言:javascript
复制
jq -c '.b[] | select(.x == "bar" or (.s | endswith("X")))' file.json

产出:

代码语言:javascript
复制
{"x":"bar","s":"FX","f":["blorg","blarg","blurb"],"v":true}
{"x":"bar","s":"EX","f":["blorg","blarg","bloob"],"v":false}
{"x":"bar","s":"XT","f":["blorg","blart","bloop"],"v":true}
{"x":"bar","s":"IJ","f":["blorg","bleep","glarp"],"v":true}
{"x":"foo","s":"IX","f":["porg","parg","pork","peep"],"v":true}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50139278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档