【问题标题】:Shell script to get key value pair from JSON object从 JSON 对象获取键值对的 Shell 脚本
【发布时间】:2015-09-22 06:44:08
【问题描述】:

我有一个像

这样的 JSON 对象
 {
  "Men": [
    "All Clothing",
    "All Clothing",
    "All footwear",
    "All footwear",
    "All Watches",
    "All Watches",
    "All Sunglasses",
    "All Sunglasses"
  ],
  "Electronics": [
    "Mobiles",
    "Tablets",
    "Wearable Smart Devices",
    "Mobile Accessories",
    "Headphones and headsets",
    "Tablet Accessories",
    "Computer Accessories",
    "Televisions",
    "Large Appliances",
    "Small Appliances",
    "Kitchen Appliances",
    "Personal Care",
    "Audio and video",
    "Laptop"
  ],
  "Women": [
    "Ethnic wear",
    "Western wear",
    "Lingerie & Sleep Wear",
    "All Bags, Belts & Wallets",
    "All jewellery",
    "All Perfumes",
    "Spectacle Frames",
    "Beauty & Personal Care",
    "The International Beauty Shop"
  ]
}

我想使用 jq 过滤器从这个 object.m 中获取键值对,但它不起作用。

keys=`jq 'keys' $categories`

$categories 是 json 对象的变量名。欢迎提出建议。

【问题讨论】:

    标签: json bash shell jq


    【解决方案1】:

    不清楚你在问什么。如果 $categories 包含您的 JSON 数据,那么您需要以某种方式将其通过管道传输到 jq。使用 Bash,您可以使用此处的字符串:

    jq keys <<<"$categories"
    

    或者更传统的(和便携的)管道:

    printf '%s\n' "$categories" | jq keys
    

    要将键的值捕获到变量中,请使用命令替换:

    keys=$(jq 'keys' <<<"$categories")
    

    (或 `backticks` 就像你的尝试一样;但现代符号更可取);

    或者更好的是,以与您最初分配categories 相同的方式获取此值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      相关资源
      最近更新 更多