这里是一个由curl <url> | jq '.'返回JSON对象(许多,美化的)

{
 "63": {
    "state": {
      "on": false,
      "alert": "select",
      "mode": "automation",
      "reachable": true
    },
    "swupdate": {
      "state": "notupdatable",
      "lastinstall": "2019-09-15T11:19:15"
    },
    "type": "plug",
    "name": "Tree",
    "modelid": "XXX",
    "manufacturername": "XXX",
    "productname": "plug",
    "capabilities": {
      "certified": false,
      "control": {},
      "streaming": {
        "renderer": false,
        "proxy": false
      }
    },
    "config": {
      "archetype": "plug",
      "function": "functional",
      "direction": "omnidirectional"
    },
    "uniqueid": "00:0d:6f:ff:fe:da:c9:dc-01",
    "swversion": "2.0.022"
  }
}

我想管道输出到jq,这样我可以从返回的每个对象,如密钥和名称"63" "Tree"(我不担心,如果结果是在括号或如何领域是分开的还是"name":包括)

我可以得到键: curl <url> | jq -r 'keys[]'

和名称: curl <url> \ jq -r '.[]{"name"}

但我不能让他们都在同一行。

分析解答

一个简洁,高效的,有些人会说优雅的,解决方法:

map_values(.name)

其中许多替代品:

with_entries( {key, value: .value.name} )

如果你想在同一行的一切,你可以使用-c命令行选项。