繁体   English   中英

如何使用带有JQ解析器的Shell脚本分离所有键和值并存储在数组中

[英]How to separate all the keys and values and store in an array using shell script with jq parser

我有一个像这样的JSON文件:

{
 "images1" : 
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "Icon-Small@2x.png",
      "scale" : "2x"
    },
 "images2" : 
    {
      "size" : "29x30",
      "idiom" : "iphone2",
      "filename" : "Icon-Small@2x.png2",
      "scale" : "22x"
    }
}

我将传递JSON对象名称作为输入。 因此,如果我知道“ images1”是对象,则需要将该对象的所有键和值存储在两个单独的数组中,以便可以在进一步处理中使用它们。

任何帮助是极大的赞赏。 谢谢

您可以使用以下内容:

jq ".$1 | { keys: keys_unsorted, values: [.[]] }"

其中$1应该提供您要处理的项目的名称(请注意,这是假设您在脚本中使用此名称。您可能想要使用fedorqui的替代方法)。

这将产生一个对象,其keys属性将是按键阵列$1values相关联的值的数组:

$ echo '{
 "images1" :
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "Icon-Small@2x.png",
      "scale" : "2x"
    },
 "images2" :
    {
      "size" : "29x30",
      "idiom" : "iphone2",
      "filename" : "Icon-Small@2x.png2",
      "scale" : "22x"
    }
}' | jq ".images1 | { keys: keys_unsorted, values: [.[]] }"
{
  "keys": [
    "size",
    "idiom",
    "filename",
    "scale"
  ],
  "values": [
    "29x29",
    "iphone",
    "Icon-Small@2x.png",
    "2x"
  ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM