user3893836
user3893836

Reputation: 85

jq construct key and value pair

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

Answers (1)

Ron
Ron

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

Related Questions