2017-05-17 9 views
1

jqには、キー名とisAvailableの両方の値を返すようにしています。jsonを使用してjsonで複数の要素を出力する

[ 
    "AMSTERDAM03, 
    "1" 
] 

はここでAPIの呼び出しによって返されるJSON:この製品は、ので、私は理想的に以下のようなものを返すことができるようにしたいと思いAPIによって返されるすべての地域では現在使用できません。

[ 
    { 
     "description": "AMS03 - Amsterdam", 
     "keyname": "AMSTERDAM03", 
     "location": { 
      "location": { 
       "id": 814994, 
       "longName": "Amsterdam 3", 
       "name": "ams03", 
       "statusId": 2 
      }, 
      "locationPackageDetails": [ 
       { 
        "isAvailable": 1, 
        "locationId": 814994, 
        "packageId": 737 
       } 
      ] 
     }, 
     "sortOrder": 2 
    } 
] 

私はjq '.[] | .keyname'を実行した場合、私は戻って期待値を取得しますが、私は下位層に掘りための構文を把握するように見えることはできません。以下のような

答えて

1

簡単jqフィルタは予想通り

command-producing-json | jq '.[] | [ .keyname, .location.locationPackageDetails[].isAvailable ]' 

以下に生じるであろう、十分であろう。

[ 
    "AMSTERDAM03", 
    1 
] 

あなたは-r--raw-outputオプションを使用して二重引用符を失う可能性があります。

+2

JSON構造を失うことなく二重引用符を失うのは簡単ではありません。ここで-rオプションを追加しても、出力は配列なので、違いはありません。 – peak

関連する問題