728x90

윈도 환경에서는 그렇게 많이 사용되지 않지만 맥이나 리눅스 등의 환경에서는 컬(curl) 명령이 무척 자주 사용됩니다. curl 명령을 이용해서 간단한 HTTP 요청을 쉽게 만들고 요청(Request), 응답(Response) 헤더는 물론이고 전달되는 데이터까지 쉽게 살펴볼 수 있기 때문입니다. 하지만 curl 명령을 이용해서 큰 사이즈의 JSON 응답을 내려주는 API 를 조회하는 경우 그 내용을 살펴보기가 다소 쉽지 않다는 단점이 있습니다. 때문에 JSON Formatter 나 유사한 기능을 제공하는 편집기로 본문을 가공하여 확인해야만 했습니다. 

 

오늘 소개해드리는 커맨드라인 툴인 jq 는 이런 불편을 제거해주기 위한 훌륭한 도구가 될 것 같습니다. Github 에 소스코드가 공개되어 있는 jq 는 awk 나 grep 처럼 파이프(Pipe)를 이용하여 응답 컨텐츠에 포함된 JSON 형태의 데이터를 전달, 가공하여 리턴해주는 역할을 하게 됩니다. 이를 통해 번거롭게 JSON 형태의 데이터를 재가공할 필요 없이 터미널 상에서 curl 명령을 약간 바꾸는 것만으로 쉽게 JSON 을 확인할 수 있게 됩니다. 백문이 불여일견이니 한번 사용예를 보도록 하겠습니다. 

 

 

시험용 서버가 준비되지 않아 쉽게 쓸 수 있는 블로그스팟의 피드를 JSON 형태로 받아보기로 하겠습니다. 개인의 블로그에 영향을 주지 않도록 구글블로그의 공식 채널을 이용해봤습니다. 복사해서 붙여넣기 쉽도록 위의 명령을 다시 적어드리면 curl -v "https://googleblog.blogspot.kr/feeds/posts/default?alt=json" | head -n 10 이 되겠습니다. 캡쳐에서는 빠졌습니다만 less 도 연결해 주시는 것이 정신 건강에 좋습니다. jq 를 이용하지 않았기 때문에 원본 서버가 전달해주는 컨텐츠를 그대로 표현하게 되겠죠?

 

 

네, 상당히 사람 프랜들리하지 않은 결과가 나왔습니다. 180k 바이트가 넘는 컨텐츠이기 때문에 한줄로 연결된 데이터를 보는 것은 사실상 불가능하고 외부 JSON Pretty Formatter 를 이용하거나 편집기를 이용해서 보기 좋게 바꿔야 합니다. 하지만 매번 그렇게 하는 것도 참 번거로울 거라는 생각이 딱 들죠? 이럴때 유용한 커맨드라인 툴이 바로 jq 입니다. 이제 파이프를 이용하여 jq 로 응답 결과를 전달해서 간편하게 데이터를 가공해 보도록 하겠습니다. 

 

 

여기서도 친절하게 명령을 다시 적어드려 보겠습니다. curl -v "https://googleblog.blogspot.kr/feeds/posts/default?alt=json" | jq '.' | head -n 10 이 바로 명령입니다. 앞선 명령과의 차이는 파이프로 연결된 jq '.' 가 추가된 정도입니다. 하지만 결과는 정말 아릅답게 출력이 된 모습을 볼 수 있습니다. curl 명령을 이용해서 디버깅을 하거나 테스트를 수행하는 경우에 정말 간편하게 응답을 해석할 수 있게 된 것입니다. jq 는 다양한 운영체제용으로 준비되어 있어 공식 웹사이트나 github 에서 필요한 환경에 맞는 소스코드/실행파일을 다운로드 받으실 수 있습니다. 

 

 

 

 

jq로 JSON 쉽게 다루기(1), 반복되는 배열에서 특정 속성 뽑아내기

JSON을 다루는 것은 개발자에게는 숙명입니다. 그래도 SOAP 보다 편리하고 쉽다는게 어디냐며 위로해 보지만 할 때마다 새롭고 매번 처음 보는 것 같이 헤메는 것이 또한 JSON 다루기의 특징이기도

ondemand.tistory.com

 

커맨드라인 JSON Pretty Formatter - jq 공식 웹사이트 방문하기 [바로가기]

 

2016/01/13 - 마이크로소프트 윈도10, 학생용 버전 10% 할인 프로모션

2015/12/24 - Node v4.2.4 (LTS) 버전이 새로 업데이트 되었습니다

2015/11/19 - 비주얼 스튜디오 코드(Visual Studio Code), 깃허브를 통해 오픈소스로 공개!

2015/10/26 - 마이크로소프트, 닷넷 코어(.NET Core) 및 ASP.NET 5 취약점 포상 프로그램 실시

2015/10/02 - 마이크로소프트 애져(Azure), 아카마이(Akamai)를 통한 CDN 서비스 제공 발표

2015/09/21 - TinyPNG 를 이용하여 PNG/JPG 이미지를 동적으로 가공하기

 

728x90

+ Recent posts