2015-11-13 51 views
0

我不明白爲什麼鍵必須處於()這個工作:括號內爲JQ .KEY

# kbrandt at glade.local in ~ on git:master x [15:08:19] 
$ cat host | jq '. | to_entries | map({ (.key) : .value.CPU.PercentUsed })' | tail 
    { 
    "rpi-b827eb2d7d23": 10.333333333333334 
    }, 
    { 
    "rpi-b827eb8d7c8d": 60 
    }, 
    { 
    "rpi-b827eba999fa": 40.733333333333334 
    } 
] 

# kbrandt at glade.local in ~ on git:master x [15:08:54] 
$ cat host | jq '. | to_entries | map({ .key : .value.CPU.PercentUsed })' | tail 
jq: error: syntax error, unexpected FIELD (Unix shell quoting issues?) at <top-level>, line 1: 
. | to_entries | map({ .key : .value.CPU.PercentUsed }) 
jq: 1 compile error 

回答

2

當定義對象文本,括號表明表達式的值應該是物業名稱。否則,如果你沒有使用圓括號,這是字面名稱。

因此,這些都是等價的方式與一個"foo"屬性來定義一個對象:

{ foo: 1 } 
{ "foo": 2 } 
"foo" as $name | { ($name): 3 } 
{ somename: "foo" } | { (.somename): 4 } 
+0

那爲什麼'.value.CPU.PercentUsed'並不需要在括號? –

+1

這是該房產的價值。如果你想按價值給出一個名字,那隻需要鑰匙。您不一定需要將值放在括號內。 –