大きなデータセットで作業していますが、興味のあるデータのみを含むオブジェクトを作成するためにJQを使用しています。問題の説明に役立つサンプルデータを提供しました。JQオブジェクトに配列を挿入する
これまでのところ、2つのオブジェクトまたは2つの配列を追加する方法しか見つかりませんでしたが、フラットフィールドのセットを取得し、mainJsonにサブオブジェクトとして配列を追加します。
tmpData.txt
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batter": [{
"id": "1001",
"type": "Regular",
"status":{
"complete": false
}
},
{
"id": "1002",
"type": "Chocolate",
"status":{
"complete": false
}
},
{
"id": "1003",
"type": "Blueberry",
"status":{
"complete": false
}
},
{
"id": "1004",
"type": "Devil's Food",
"status":{
"complete": false
}
}
]
}
はこれまでのところ、私が来た最も近いが、トップレベルのフィールドにのみ1時間を出力しますが、各打者はそれ自身のオブジェクトである。この
cat tmpData.txt | jq '[{id, type}] + [(.batter[] | {batterId: .id, complete: .status.complete})]'
です、私はこの全体の出力が1つのオブジェクトになる必要があります。
{
"id": "0001",
"type": "donut",
"batter": [{
"id": "1001",
"complete": false
},
{
"id": "1002",
"complete": false
},
{
"id": "1003",
"complete": false
},
{
"id": "1004",
"complete": false
}]
}
あなたは、私が知る必要があるすべてが含まれている1つのオブジェクトが存在し、かつ重複や無関係なデータがありません見ることができるように:私の理想的な出力は次のようになり
[
{
"id": "0001",
"type": "donut"
},
{
"batterId": "1001",
"complete": false
},
{
"batterId": "1002",
"complete": false
},
{
"batterId": "1003",
"complete": false
},
{
"batterId": "1004",
"complete": false
}
]
。私はIDとそのステータスを持つ打者の配列を含む単一のオブジェクトを出力したいと思います。
動作しますJSONオブジェクト
で表現されるだろうしてください場合、これは理にかなっていますより短く、より明確に、より一貫して、完全にするために質問を編集してください。たとえば、「理想出力」は切り捨てられます。また、 "理想的な出力"の.batter配列には、{id:_、complete:_}という形式の要素がありますが、試みには "batterId"と "status"があります。 – peak
@peakありがとうございます。私は質問をクリアしてフィルターを修正しました。私はあなたが私の最後の質問に答えたと信じています、これはその延長ではありません。 – Goldfish
明快にするために短縮された質問 – Goldfish