How to get key names from JSON using jq

前端 未结 7 1042
[愿得一人]
[愿得一人] 2020-11-29 22:15

curl http://testhost.test.com:8080/application/app/version | jq \'.version\' | jq \'.[]\'

The above command outputs only the values as below:

         


        
7条回答
  •  感动是毒
    2020-11-29 22:22

    You can use:

    $ jq 'keys' file.json
    
    $ cat file.json:
    { "Archiver-Version" : "Plexus Archiver", "Build-Id" : "", "Build-Jdk" : "1.7.0_07", "Build-Number" : "", "Build-Tag" : "", "Built-By" : "cporter", "Created-By" : "Apache Maven", "Implementation-Title" : "northstar", "Implementation-Vendor-Id" : "com.test.testPack", "Implementation-Version" : "testBox", "Manifest-Version" : "1.0", "appname" : "testApp", "build-date" : "02-03-2014-13:41", "version" : "testBox" }
    
    $ jq 'keys' file.json
    [
      "Archiver-Version",
      "Build-Id",
      "Build-Jdk",
      "Build-Number",
      "Build-Tag",
      "Built-By",
      "Created-By",
      "Implementation-Title",
      "Implementation-Vendor-Id",
      "Implementation-Version",
      "Manifest-Version",
      "appname",
      "build-date",
      "version"
    ]
    

    UPDATE: To create a BASH array using these keys:

    Using BASH 4+:

    mapfile -t arr < <(jq -r 'keys[]' ms.json)
    

    On older BASH you can do:

    arr=()
    while IFS='' read -r line; do
       arr+=("$line")
    done < <(jq 'keys[]' ms.json)
    

    Then print it:

    printf "%s\n" ${arr[@]}
    
    "Archiver-Version"
    "Build-Id"
    "Build-Jdk"
    "Build-Number"
    "Build-Tag"
    "Built-By"
    "Created-By"
    "Implementation-Title"
    "Implementation-Vendor-Id"
    "Implementation-Version"
    "Manifest-Version"
    "appname"
    "build-date"
    "version"
    

提交回复
热议问题