Reputation: 85
I have JSON file as below:
{
"metadata":{
"selfLink":"/api/v1/nodes",
"resourceVersion":"6666628"
},
"items":[
{
"metadata":{
"name":"d50d-sa-app23",
"selfLink":"/api/v1/nodes/d50d-sa-app23",
"uid":"86a0e0b7-e9da-4489-86bd-0b6a7aafe102",
"resourceVersion":"6666622",
"creationTimestamp":"2020-07-07T12:34:08Z",
"labels":{
"beta.kubernetes.io/arch":"amd64",
"beta.kubernetes.io/os":"linux",
"node-role.kubernetes.io/master":""
}
}
}
]
}
The desired output is below. Please note that the name and number of label are not fixed.
beta.kubernetes.io/arch=amd64;beta.kubernetes.io/os=linux;node-role.kubernetes.io/master=
I know how to get keys and values pair separately. like below, but I don't know to pair key & value together.
.items[] | ((.metadata.labels | keys | join(",")) + "=" + (.metadata.labels | join(";")))
Can anyone help?
Thanks
Upvotes: 0
Views: 205
Reputation: 6551
Does this help you solve your issue:
jq -r '.items[].metadata.labels| to_entries|map("\(.key)=\(.value)") |join(";")'
// Output:
// beta.kubernetes.io/arch=amd64;beta.kubernetes.io/os=linux;node-role.kubernetes.io/master=
Upvotes: 1