2015-10-28 44 views
0

JSON輸入我有這個輸入:JQ解析與變量

{ 
    "users": [ 
    { 
     "name": "tester-01", 
     "user": { 
     "username": "tester01" 
     } 
    }, 
    { 
     "name": "tester-02", 
     "user": { 
     "username": "tester02" 
     } 
    } 
    ], 
    "current-user": "tester-02" 
} 

使用JQ(1.5),我想打印當前用戶相匹配的用戶名。

任何人都可以分享這將如何完成或提示讓我開始?

+0

我想出了: JQ -r」 「當前用戶」 爲$ foo的| .users [] |選擇(.name == $ foo).user' 是否有替代方案? – user3694539

+1

這可能是codereview.stackexchange.com的主題,但我認爲您需要更具體地瞭解您認爲可以改進的內容 – chepner

+0

@ user3694539您似乎是解決此問題的標準解決方案。你應該把它作爲答案。 – nwk

回答

2

這是我的解決方案。

cat 99 | jq -r '."current-user" as $foo | .users[] | select(.name == $foo).user' 
{ 
    "username": "tester02" 
} 
+0

這幾乎是我會如何做到的。 –

+0

'-r'不是必需的,因爲您輸出的是JSON對象,而不是字符串值。 – chepner

0

選擇解決方案是不錯的。這是一個替代方案,使用foreach

foreach .users[] as $u (
    ."current-user" 
    ; . 
    ; if . == $u.name then $u.user.username else empty end 
)