jq:在数组的结构中查找键或在jq中使用默认值

巴斯·莫斯基蒂

考虑以下JSON输入:

{
  "id":0,
  "Tags": [
    {"Key":"Name", "Value":"machine1"},
    {"Key":"Stage", "Value":"UAT"}
  ]
},
{
  "id":1,
  "Tags": [
    {"Key":"Stage", "Value":"UAT"}
  ]
},
{
  "id":2,
  "Tags": []
},
{
  "id":3
}

我寻求一个解决方案,管道和选择之后将产生的任一值Value,其中一个键字段NameName(none)作为缺省值。我得到的最接近的是:

jq -r 'if(.Tags == null or .Tags == []) then .Tags=[{"Key":"Name","Value":"(none)"}] else . end | "\(.id) \(.Tags[] | select(.Key == "Name")|.Value)" '

该解决方案适用于ID 0,2和3是当Tags数组存在但并没有包含。重点==“名称”的选择率空,没有返回值。如果我对此稍作改动,我可能会偶然发现它,但是。理想情况下,我想执行以下操作(jq伪代码):

Defend against null tags, then walk array looking for Name
'\(.Tags // [{}] | select(.Tags[].Key == "Name")?.Value // "(none)")

可能只是我确实需要多一阶段,但我想探索其他聪明的可能性。

大卫·Z

这个jq脚本应该可以解决这个问题:

{
  id,
  name: (first(.Tags[] | select(.Key == "Name").Value)? // "(none)")
}
| "\(.id) \(.name)"

它的工作方式与您的伪代码相似,但不能主动防御.Tags数组缺失或为空。没有特别的理由将其与存在但不包含Name条目的情况区别对待该程序只是尝试访问.ValueName条目,并且如果由于某种原因根本不起作用,它将替换"(none)"

您可以将其放入文件中,也可以直接使用

$ jq -r '{id, name: ...} | "\(.id) \(.name)"' input.json

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JQ中使用JSON键作为查找

来自分类Dev

jq在数组中查找后合并对象

来自分类Dev

使用 jq,选择多个键并在数组中返回它们

来自分类Dev

使用数组中的值作为键在 JavaScript 哈希中设置默认值

来自分类Dev

使用 jq 替换字典中的数组值

来自分类Dev

在C中的结构上使用malloc之后,数组中的默认值是多少

来自分类Dev

在参数默认值中使用查找功能

来自分类Dev

使用数组键和默认值填充哈希

来自分类Dev

使用jq根据键数组修改JSON值

来自分类Dev

使用JSON和JQ中的特定键获取具有所有值的数组

来自分类Dev

使用 jq,获取特定键的值,该键位于数组中的 shell 定义的 JSON 对象内

来自分类Dev

在基类数组中使用Subclass方法的默认值

来自分类Dev

如何在char数组中使用默认值?

来自分类Dev

jq在数组中获取值

来自分类Dev

在bash中使用jq将json值提取为数组

来自分类Dev

如何在值数组中使用 jq 进行选择?

来自分类Dev

NodeJS通过键的值在数组中查找对象

来自分类Dev

Swift:在数组中查找值并返回特定键

来自分类Dev

Python:根据键的值在数组中查找字典

来自分类Dev

Swift:在数组中查找值并返回特定键

来自分类Dev

使用 jq 解析 json 树中的多个键/值

来自分类Dev

在PHP中使用递归在数组中查找最大值

来自分类Dev

使用lodash在数组对象中查找并添加额外的键?

来自分类Dev

使用 jq 为文件中的 json 数组中的每个对象添加一个新的键/值

来自分类Dev

在R中定义的类中使用默认值

来自分类Dev

在数组中查找值

来自分类Dev

JSON:使用jq编辑嵌套数组中的特定值

来自分类Dev

在C ++中使用STL在数组中查找最小元素

来自分类Dev

jq将键数组与值数组合并

Related 相关文章

热门标签

归档