나의 발자취

JSON 쿼리 명령어 JMESPath 사용하기 본문

리눅스 명령어

JSON 쿼리 명령어 JMESPath 사용하기

달모드 2024. 10. 23. 12:45

수업 중에 유용한 것을 알게 되어서 포스팅을 작성한다.

 

 

JMESPath란?

JMESPath는 JSON 데이터를 다루는 데 매우 유용한 도구이다. 간편한 문법과 강력한 기능 덕분에 API 응답 처리, 로그 분석, 데이터 변환 등 다양한 분야에서 활용할 수 있다. JSON 데이터 작업이 필요한 개발자라면 JMESPath를 적극적으로 활용해 보아야 한다.

 

JMESPath의 주요 특징

  1. 간결한 문법: JMESPath는 직관적인 문법을 제공하여 JSON 데이터를 쉽게 탐색하고 변환할 수 있다. 이를 통해 복잡한 데이터를 더 명확하게 이해할 수 있다.
  2. 강력한 기능: 배열, 객체, 필터링, 정렬 등의 다양한 기능을 지원하여 복잡한 쿼리도 간편하게 작성할 수 있다.
  3. 다양한 언어 지원: JMESPath는 Python, JavaScript, Go 등 여러 프로그래밍 언어에서 사용할 수 있는 라이브러리를 제공한다.

 

JMESPath 사용 사례

1. API 응답 처리

API에서 반환된 JSON 데이터를 처리할 때, JMESPath를 사용하여 필요한 필드만 추출할 수 있다. 예를 들어, 특정 사용자 정보를 요청하고 그중 이름과 이메일만 선택할 수 있다.

2. 로그 데이터 분석

대량의 로그 파일에서 특정 조건을 만족하는 데이터를 필터링할 때 유용하다. 예를 들어, 오류 메시지만 추출하여 문제를 신속하게 파악할 수 있다.

3. 데이터 변환

JSON 데이터를 다른 형태로 변환하는 데 유용하다. 예를 들어, 데이터를 특정 형식으로 재구성하여 다른 시스템에 전달할 수 있다.

 

 

JMESPath의 장점

  • 빠른 개발: 복잡한 쿼리를 간단하게 작성할 수 있어 개발 시간을 단축할 수 있다.
  • 가독성: 쿼리 구조가 직관적이어서 다른 개발자도 쉽게 이해할 수 있다.
  • 유연성: 다양한 데이터 구조에 적용 가능하여 폭넓은 활용이 가능하다.

맥 터미널에서 JMESPath 사용하기

  1. JSON 데이터 준비
    먼저, JSON 데이터를 파일로 저장한다. 예를 들어 data.json이라는 파일에 JSON을 저장한다.

  2. JMESPath CLI 설치
    JMESPath를 CLI에서 사용하기 위해 jmespath 패키지를 설치한다. Homebrew를 사용하여 설치할 수 있다.
     
    brew install jmespath

    그 다음 jp --version 명령어로 제대로 설치되었는지 확인한다.

  3. 터미널에서 JSON 데이터 쿼리하기
    JSON 파일을 쿼리할 때는 다음 명령어를 사용한다.이 명령어는 data.json 파일에서 모든 사용자 이름을 추출하여 출력한다.
     
    cat data.json | jmespath 'users[*].name'
    사실 매번 jmespath 대신 jp라는 명령어로 JMESPath 쿼리를 실행할 수 있다. 

  4. 다양한 쿼리 시도: 원하는 정보를 추출하기 위해 다양한 JMESPath 쿼리를 사용해 볼 수 있다. 예를 들어, 특정 조건에 맞는 데이터를 필터링하거나 중첩된 정보를 추출할 수 있다.

    이 외에도 다양한 문법들은 아래 공식 홈페이지에서 찾아볼 수 있다: 

 

https://jmespath.org/tutorial.html

 

 

JMESPath Tutorial — JMESPath

This is a tutorial of the JMESPath language. JMESPath is a query language for JSON. You can extract and transform elements from a JSON document. The examples below are interactive. You can change the JMESPath expressions and see the results update automati

jmespath.org

 

 

 

Comments