?
사용자

curl과 jq를 이용한 API 응답 JSON 데이터 추출 레시피

REST API 호출 후 복잡한 JSON 응답에서 필요한 데이터만 쉽고 빠르게 추출해야 할 때 유용합니다. CLI 환경에서 JSON 데이터를 효과적으로 다룰 수 있습니다.

#curl#jq#json#api#cli
recipe.sh
## curl과 jq로 API 응답 JSON 데이터 파싱하기

이 레시피는 `curl`을 사용하여 API 엔드포인트에서 데이터를 가져오고, `jq`를 사용하여 복잡한 JSON 응답에서 원하는 정보만 추출하는 방법을 안내합니다. CLI 환경에서 API 데이터를 신속하게 확인하고 활용하는 데 매우 유용합니다.

### 사용법

1.  **API 엔드포인트에서 데이터 가져오기:** `curl` 명령어를 사용하여 지정된 URL에서 JSON 데이터를 가져옵니다.
2.  **JSON 데이터 파싱:** `jq`를 사용하여 가져온 JSON 데이터에서 특정 필드나 중첩된 구조를 선택하거나 필터링합니다.

### 기본 명령어 구조

```bash
curl -s "{{API_URL}}" | jq '{{JQ_FILTER_EXPRESSION}}'
```

*   `{{API_URL}}`: 데이터를 가져올 API의 전체 URL입니다. (예: `https://jsonplaceholder.typicode.com/posts/1`)
*   `{{JQ_FILTER_EXPRESSION}}`: 추출하고자 하는 JSON 데이터의 구조를 지정하는 `jq` 필터 표현식입니다. (예: `.title`, `.[0].name`, `.users[] | select(.age > 30) | .name`)

### 예시 1: 단일 객체에서 특정 필드 추출

**API URL:** `https://jsonplaceholder.typicode.com/posts/1`

**목표:** 게시물의 제목(`title`)과 내용(`body`)만 추출합니다.

**입력 (curl -s "https://jsonplaceholder.typicode.com/posts/1")**:

```json
{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
```

**명령어:**

```bash
curl -s "https://jsonplaceholder.typicode.com/posts/1" | jq '.title, .body'
```

**기대 출력:**

```
"sunt aut facere repellat provident occaecati excepturi optio reprehenderit"
"quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
```

### 예시 2: 배열에서 특정 조건에 맞는 요소 추출

**API URL:** `https://jsonplaceholder.typicode.com/users`

**목표:** ID가 5 이상인 사용자의 이름(`name`)만 추출합니다.

**입력 (curl -s "https://jsonplaceholder.typicode.com/users" 의 일부)**:

```json
[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
  // ... 다른 사용자들 ...
  {
    "id": 5,
    "name": "Chelsey Dietrich",
    // ...
  }
]
```

**명령어:**

```bash
curl -s "https://jsonplaceholder.typicode.com/users" | jq '.[] | select(.id >= 5) | .name'
```

**기대 출력 (위 예시 데이터 기준):**

```
"Chelsey Dietrich"
"Mrs. Dennis Schulist"
"Kurtis Weissnat"
```

### 고급 활용

*   **중첩된 객체 접근:** `.address.city` 와 같이 점(`.`)을 사용하여 중첩된 필드에 접근합니다.
*   **객체 생성:** `jq '{userName: .name, userCity: .address.city}'` 와 같이 원하는 키와 값으로 새로운 JSON 객체를 생성할 수 있습니다.
*   **조건부 필터링:** `select()` 함수를 사용하여 특정 조건을 만족하는 요소만 선택할 수 있습니다.
*   **파이프라인:** `jq` 필터 내에서도 파이프(`|`)를 사용하여 여러 연산을 순차적으로 적용할 수 있습니다.

`curl`과 `jq`를 조합하면 CLI에서 JSON 데이터를 다루는 강력하고 유연한 방법을 얻을 수 있습니다. 다양한 API 응답에 맞춰 `jq` 필터를 조정하여 필요한 정보를 효율적으로 추출해보세요.
2
스크랩
15
좋아요
0
댓글
curl과 jq를 이용한 API 응답 JSON 데이터 추출 레시피