私はこのJsonを持っています
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Jqを使って姓名を順番に表示したいのですが。そのようです -
Stevie Wonder
Michael Jackson
これは私が得た距離です -
jq '.users[].first, .users[].last'
しかしそれは表示されます
"Stevie"
"Michael"
"Wonder"
"Jackson"
以下に注意してください -
Key、valueが文字列の場合、上記の両方の答えはうまくいきますが、文字列と整数を追加する状況がありました(上記の式を使ったjqエラー)。
要件:jsonの下にURLを作成する
pradeep@seleniumframework>curl http://192.168.99.103:8500/v1/catalog/service/Apache-443 | jq .[0]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 251 100 251 0 0 155k 0 --:--:-- --:--:-- --:--:-- 245k
{
"Node": "myconsul",
"Address": "192.168.99.103",
"ServiceID": "4ce41e90ede4:compassionate_wozniak:443",
"ServiceName": "Apache-443",
"ServiceTags": [],
"ServiceAddress": "",
"ServicePort": 1443,
"ServiceEnableTagOverride": false,
"CreateIndex": 45,
"ModifyIndex": 45
}
溶液:
curl http://192.168.99.103:8500/v1/catalog/service/Apache-443 |
jq '.[0] | "http://" + .Address + ":" + "\(.ServicePort)"'
私はこのようなことをすることによって私が望んでいたものにかなり近づいた
cat my.json | jq '.my.prefix[] | .primary_key + ":", (.sub.prefix[] | " - " + .sub_key)' | tr -d '"'
その出力は、私が通常それを他のツールにインポートするのに十分なほど問題なく十分に近いです。 (私はまだ入力JSONのサブセットを基本的にエクスポートする方法を探しています)
jq '.users[]|.first,.last' | paste - -
これは名前の配列を生成します
> jq '[ .users[] | (.first + " " + .last) ]' ~/test.json
[
"Stevie Wonder",
"Michael Jackson"
]