JSON 파일에서 원하는 값만 골라내기
JavaScript 개발을 하다 보면 JSON 파일에 담긴 데이터 중에서 특정 조건을 만족하는 값만 추출해야 하는 경우가 자주 발생합니다. 이번 글에서는 readable 속성이 true인 객체만 필터링하여 반환하는 함수를 만드는 방법을 예제와 함께 살펴보겠습니다.
다음과 같은 데이터가 담긴 JSON 파일 data.json이 있다고 가정해 보겠습니다.
data.json
{
"names": [{
"name": "Ramesh",
"readable": true
}, {
"name": "Suresh",
"readable": false
}, {
"name": "Mahesh",
"readable": true
}, {
"name": "Gourav",
"readable": true
}, {
"name": "Mike",
"readable": false
} ]
}우리가 구현해야 할 함수는 parseData입니다. 이 함수는 파일 경로를 유일한 인자로 전달받아 해당 JSON 파일을 읽은 뒤, names 배열 중 readable 속성이 true인 요소들로만 구성된 하위 배열을 반환해야 합니다.
구현 방법
Node.js 환경에서는 require 모듈을 사용하면 JSON 파일을 아주 간편하게 불러올 수 있습니다. require는 JSON 파일을 읽는 동시에 자동으로 JavaScript 객체로 변환(파싱)해 주기 때문에, 별도로 JSON.parse()를 호출할 필요가 없다는 점이 장점입니다. 이후 배열의 내장 메서드인 filter()를 활용하면 조건에 맞는 항목만 손쉽게 걸러낼 수 있습니다.
예제 코드
const path = "./data.json";
const parseData = (path) => {
const data = require(path);
// 이미 파싱된 상태이므로 추가로 파싱할 필요가 없음
return data.names.filter(el => el.readable);
}
const results = parseData(path);
console.log(results);실행 결과
콘솔 출력 결과는 다음과 같습니다.
[
{ name: 'Ramesh', readable: true },
{ name: 'Mahesh', readable: true },
{ name: 'Gourav', readable: true }
]코드 핵심 정리
- require(path): 지정한 경로의 JSON 파일을 읽어 들여 자동으로 JavaScript 객체로 변환합니다.
- data.names.filter(el => el.readable): filter 메서드는 콜백 함수가 true를 반환하는 요소만 모아 새로운 배열을 생성합니다. 여기서는 readable 속성이 true인 객체만 결과 배열에 남게 됩니다.
- 원본 배열 유지: filter는 기존 배열을 변경하지 않고 새 배열을 반환하므로, 원본 데이터를 그대로 보존할 수 있다는 장점도 있습니다.
이처럼 require와 filter 메서드를 조합하면 단 몇 줄의 코드만으로 JSON 데이터에서 원하는 조건의 값만 깔끔하게 추출할 수 있습니다. API 응답 처리나 설정 파일 필터링 등 다양한 상황에서 유용하게 활용할 수 있는 패턴이니 꼭 기억해 두세요.