【问题标题】:JQ: How to get just part of a JSON object? [duplicate]JQ:如何只获取 JSON 对象的一部分? [复制]
【发布时间】:2021-12-17 18:17:59
【问题描述】:

我怎样才能得到我想要的输出?我不知道如何保留对象名称(键)。

我是 jq 的新手,我尝试了 jq 的 select/flatten/map/","/"keys as $k".../etc 的几种风格。但我什么也没有。

输入

$ echo '{"apples": {"color":"green",  "count":3}, "bananas": {"color":"yellow", "count":4}, "cherries": {"color":"red"}}' \  
  | jq .
{
  "apples": {
    "color": "green",
    "count": 3
  },
  "bananas": {
    "color": "yellow",
    "count": 4
  },
  "cherries": {
    "color": "red"
  }
}

实际输出

这是我得到的最好的,但对象名称不见了:

$ echo '{"apples": {"color":"green",  "count":3}, "bananas": {"color":"yellow", "count":4}, "cherries": {"color":"red"}}' \  
  | jq '.apples, .cherries'
{
  "color": "green",
  "count": 3
}
{
  "color": "red"
}

预期输出

这就是我想要的:

{"color":"yellow", "count":4}, "cherries": {"color":"red"}}' \  
  | jq #some-jq-magic-here
{
  "apples": {
    "color": "green",
    "count": 3
  },
  "cherries": {
    "color": "red"
  }
}

【问题讨论】:

  • 在你的情况下:{apples, cherries}
  • 我不确定所选的stackoverflow.com/questions/34834519/… 是否是理想的重复目标。这个问题比这个问题更含糊,虽然想要的答案那里,但目前既不是公认的也不是最受支持的答案。

标签: json jq


【解决方案1】:

jq '{苹果,樱桃}'

我先尝试了点:jq '{.apples, .cherries}'。那没有用。

但是没有点它就可以正常工作:

$ echo '{
  "apples":   { "color":"green",  "count": 3 },
  "bananas":  { "color":"yellow", "count": 4 },
  "cherries": { "color":"red" }
}' | jq '{apples, cherries}'
{
  "apples": {
    "color": "green",
    "count": 3
  },
  "cherries": {
    "color": "red"
  }
}

相关: How do I select multiple fields in jq?

【讨论】:

  • RE "我先尝试了点",{apples, cherries}{apples: .apples, cherries: .cherries} 的缩写
【解决方案2】:
echo '...' | jq 'with_entries(select([.key] | inside(["apples", "cherries"])))'

谢谢https://stackoverflow.com/a/46293052/9216229

【讨论】:

猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2013-05-11
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
相关资源
最近更新 更多