2017-04-21 116 views
0

嗨,有沒有辦法使用JQ拼接JSON對象

添加對象JSON Main.JSON

{ 
     "person": 
     [ 
      { 
      "name": "John", 
      "Age": 10 
      } 
     ] 
     "Work": 
     [ 
      { 
      "Type":"HR" 
      } 
     ] 
} 

Sub.JSON

{ 
     "person": 
     [ 
      { 
      "name": "smith", 
      "Age": 20 
      } 
     ] 
} 

使用JQ如何添加子人的主要JSON,以便所需的輸出是

{ 
    "person": [{ 
      "name": "John", 
      "Age": 10 
     }, 
     { 
      "name": "smith", 
      "Age": 20 
     } 
    ], 
    "Work": [{ 
     "Type": "HR" 
    }] 
} 

回答

0
  1. 有一個在Main.json

  2. 缺少逗號解決問題後,所期望的結果可以通過使用+=,其類似於+ =在其他語言,但在這裏使用另外的陣列中來獲得拼接的感覺:

.person += $sub.person 

這裏假定$子中含有Sub.json的JSON;

jq --argfile sub Sub.json '.person += $sub.person' Main.json 

3. 如果你的JQ沒有--argfile選項,然後一個可能性是:假設你的JQ支持--argfile命令行選項,這可以使用下面的調用來完成使用 「啜食」(-S)選項,如下所示:

jq -s '.[1] as $sub | .[0]|.person += $sub.person' Main.json Sub.json 
+0

感謝目前的建議--argfile不與1.3版本的工作。有沒有其他的選擇來解析這個問題。 – renuraj

+0

請參閱#3 ... – peak