2014-12-16 2 views
0

현재 유효한 Json이있는 파일로 JQ가있는 컬 출력을 성공적으로 내보내고 있습니다.json 파일 객체를 jq가있는 별도의 json 파일로 필터링

주석은 아래 :

jsonValues ​​= <curl command> | jq '.["issues"] | map({key: .key, type: .fields.issuetype.name, typeid: .fields.issuetype.id, status: .fields.status.name, summary: .fields.summary})' > FullClosedIssueList.json; `

당신은 내가이 하나의 명령으로 두 가지 일을하고 있어요 것을 볼 수 있습니다

  • jsonValues에 모든 결과를 퍼팅.
  • FullClosedIssueList.json으로 내보내기.

은 내가 jsonValues 객체가 [, ], 누락 포맷 된 것을 찾을 수 있습니다.

{ 
    "key": "ON-12345", 
    "type": "Bug", 
    "typeid": "1", 
    "status": "Closed", 
    "summary": "Some Bug Title" 
} 
{ 
    "key": "ON-12346", 
    "type": "Bug", 
    "typeid": "1", 
    "status": "Closed", 
    "summary": "Some Other Bug Title" 
} 

반면 파일 출력은 유효한 json입니다.

[ 
    { 
    "key": "ON-12345", 
    "type": "Bug", 
    "typeid": "1", 
    "status": "Closed", 
    "summary": "Some Bug Title" 
    }, 
    { 
    "key": "ON-12346", 
    "type": "Bug", 
    "typeid": "1", 
    "status": "Closed", 
    "summary": "Some Other Bug Title" 
    } 
] 

bash 변수로 전달 된 객체가 유효한 json이되도록 JQ에 추가해야하는 명령은 무엇입니까?

편집 :

+0

당신은'하고있다 echo $ jsonValues' 또는'echo "$ jsonValues"'? 일반적으로 변수를 항상 dbl-quote하고 싶을 것입니다. 행운을 빕니다. – shellter

+0

jsonValues가 CURL 명령의 출력으로 설정되고 문자열 "jsonValues ​​= "가 jq로 공급됩니다. 이는 유효한 JSON이 아니기 때문에 실패합니다 ... 이것이 JIRA에 관한 것이라면 실패합니다 REST API의 유효한 JSON은 CURL 호출에서 반환되어야합니다 (https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Query+issues#JIRARESTAPI 예제 - 쿼리 - 응답) –

+0

I 그 변수의 값이 * 놀랍습니다. 파일에 저장하고 ** 출력을 변수에 저장하려면'tee'를 다음과 같이 사용하십시오 :'output = $ (some command | tee filename)'- $ 출력은 다음과 같은 내용을 가져야합니다. 파일''FullClosedIssueList.json jq ''를 쓰더라도 –

답변

2

here 당신이이 선택 명령을 동봉해야하는, 그것도에서 명령을 "지도"를 필요로 설명한 것과 동일한 문제 :

cat FullClosedIssueList.json | jq '.[] | map(select(.typeid=="1"))' 
+0

완벽한, 감사합니다. – TheMightyLlama