2017-03-13 6 views
1
{ 
    "prodid_876006": { 
     "serid": [{ 
      "seridone": "3265874" 
     }, { 
      "seridtwo": "21458915" 
     }], 
     "serials": ["028915"] 
    }, 
    "prodid_980": { 
     "serid": [{ 
      "seridone": "32743214" 
     }, { 
      "seridtwo": "5469872" 
     }], 
     "serials": ["192147","1632589"] 
    } 
} 

所望の出力を変換することによって、新しいJSONを作成はJQ既存

{  
"prodid_876006" : ["028915"], 
"prodid_980" : ["192147","1632589"] 
} 

このためのjqコマンドは何ですか?

keys ,.[].serials 

は私に次のようになります:

[ 
    "prodid_876006", 
    "prodid_980" 
] 
[ 
    "028915" 
] 
[ 
    "192147", 
    "1632589" 
] 

質問更新日:

どのように私はまた別のJSONに次のような出力を得ることができるの? (ここで重要なのは、雑誌の配列の各要素であり、その値は、最初のサンプルJSONのキーです):あなたは、キーと値のペアとパイプの配列を抽出し、これが動作するように

{  
"028915" : ["prodid_876006"], 
"192147" : ["prodid_980"], 
"1632589" : ["prodid_980"] 
} 

答えて

2

何か、 from_entriesへ:キーそれぞれ固有のシリアルとして、その値、対応するprodidsとして持つように

% jq '[to_entries[] | {"key": .key, "value": .value.serials}] | from_entries' 42762941.json 
{ 
    "prodid_876006": [ 
    "028915" 
    ], 
    "prodid_980": [ 
    "192147", 
    "1632589" 
    ] 
} 
+1

それは、上記に変更することができるか、おそらく新しい質問ありますか? – dessie