2017-02-02 2 views
1

기존에 추가 내가새로운 배열이 이미 JSON 파일 JQ 강타

{ 
    "firsttag": { 
    "secondtag": [ 
     { 
     "thirdtag": [ 
      { 
      "someothertag": [ 
       { 
       "sample":"else" 
       }, 
       {      
       "targetBlank": true,      
       } 
      ],    
      "interestingtag": [ 
       { 
       "refId": "A", 
       "target": "abc", 
       }, 
       { 
       "refId": "B", 
       "target": "bbb", 
       }, 
       { 
       "refId": "C", 
       "target": "ccc", 
       } 
      ],     
      }, 
     }, 
    "overwrite": true 
} 

내 JSON 구문이 완벽하지 않을 수 있습니다 다음과 같은 큰 JSON을 가정하지만 몇 가지 물건을 편집 한 becuase 때문입니다. 이제 내가하고 싶은 것은 interestingtag에 다른 입력과 비슷한 다른 입력을 추가하고 싶습니다. 예를 들어, 나는 그것을 좋아한다.

"interestingtag": [ 
       { 
       "refId": "A", 
       "target": "abc" 
       }, 
       { 
       "refId": "B", 
       "target": "bbb" 
       }, 
       { 
       "refId": "C", 
       "target": "ccc" 
       }, 
       { 
       "refId": "D", 
       "target": "ddd" 
       } 
      ], 

그러나 나는 그것을하는 방법을 이해할 수 없다. 나는 간단한

jq '.firsttag.secondtag[0].thirdtag[0].interestingtag + {"refId": "D", "refID": "C"}' myfile.json 

을하려고 할 때 내가이 작업을 수행 할 수있는 방법

jq: error: array and object cannot be added 

어떤 생각을

jq '.firsttag.secondtag[0].thirdtag[0].interestingtag' myfile.json 

를 사용하여 올바른 위치를 검색하지만 할 수 있습니까? 아니면 내가 뭘 잘못하고있는거야?

도움 주셔서 감사합니다.

답변

1

+은 요소를 배열에 추가하지 않습니다. this answer

jq '.firsttag.secondtag[0].thirdtag[0].interestingtag |= .+ [{"refId": "D", "refID": "C"}]' myfile.json 
+0

브릴리언트에서 설명한대로 |= .+ [...]을 사용하여 배열을 병합하려고합니다. 귀하의 링크를 통해 살펴 봤지만 [] 내에 배열을 추가 할 수 있는지 확실하지 않았습니다. 이 게시물은 단 하나의 가치에 대해서만 이야기했습니다. 고마워, 매력처럼 일 했어! –

+1

배열을 업데이트하여'| = '배열에 추가하지 말고. + [...]', 그냥 배열에 추가 :'+ = [...]' –