使用jq解析JSON文件时的Where子句问题

时间:2017-03-23 07:15:27

标签: json bash jq

我试图解析一个有600万行的JSON文件。哪个是这样的:

temp.json

{
  "bbc.com": {
    "Reputation": "2.1",
    "Rank": "448",
    "Category": [
      "News"
    ]
  },
  "amazon.com": {
    "Reputation": "2.1",
    "Rank": "448",
    "Category": [
      "Shopping"
    ]
  }
}

我知道如何解析" Keys"单独。获得" Keys"这个JSON结构,我 试过,

jq -r 'keys[]' temp.json 

结果:

amazon.com
bbc.com

获得"类别"在上面的JSON文件中。我试过了,

jq -r '.[].Category[]' temp.json 

结果:

Shopping
News

如何获得" Keys" "类别"只有"购物"?

2 个答案:

答案 0 :(得分:5)

使用to_entries功能,如下所示:

jq -r 'to_entries[] | select(.value.Category | index("Shopping") != null) | .key'

答案 1 :(得分:5)

在这种特殊情况下,可以避免to_entries及其开销,同时仍然可以提供简洁明了的解决方案:

keys[] as $k | select( .[$k].Category | index("Shopping") != null) | $k