본문 바로가기
Javascript, ES5, ES6

JSON 파일 로 데이터 변환해 저장하기 # NodeJS Path Serialize

by Developer88 2022. 12. 8.
반응형

오늘은 Javascript 의 데이터를 JSON스트링 타입으로 변환해 파일로 저장하는 방법에 대해서 정리해 보도록 하겠습니다.

 

1. 데이터를 JSON 파일로 변경하기

1-1. JSON.stringify()

먼저 Javascript 의 값들을 JSON string으로 변환하는 함수에 대해서 알아보겠습니다.

json객체의 stringify()함수가 이 역할을 해주는데요.

 

 

아래와 같이 Javascript의 값들을 json string형태로 변환시켜 줍니다.

 

 

 

만약 특정 값을 replace해야할 경우, 2번째 인자로 함수를 전달해 주면 되는데요.

이 함수는 key, value값을 가집니다.

 

 

replacer에 들어갈 함수는 다음과 같이 만들 수 있는데요.

 

 

이를 적용해보면 다음과 같이 사용할 수 있습니다.

 

 

 

stringify()의 3번재 인자로 들어갈 수 있는 space는,

JSON string에 space 를 주어서 읽기 쉽도록 해주는 옵션입니다.

 

 

아래와 같이 인자를 넣어주면 JSON을 읽기 쉽도록 2칸을 띄어서 표시하도록 할 수 있습니다.

 

JSON.stringify(myJson, null, 2);

 

1-2. JSON.parse()

json string의 파일을 만들고 나서 나중에 이용할 API인데요.

위와 같이 stringify()함수를 이용해서,

Javascript 밸류들을 JSON string으로 변환한 값들은,

다시 parse()함수를 이용해서 Javascript 값들로 변환할 수 있습니다.

 

 

2. 파일저장하기

위에서 Javascript의 값들을 JSON string으로 변환해 저장하는 것을 알아보았는데요.

이렇게 변환한 JSON string을 파일로 저장하는데 필요한 모듈들을 알아보고, 구현해 보도록 하겠습니다.

 

구현하는 코드는 몇줄 안되지만, 필요한 모듈들에 대해 이해하면서 사용하는 것이 중요하겠지요.

2-1. fs모듈

NodeJS에서는 파일을 저장할 때는 fs모듈을 사용하는데요.

json파일을 저장하려고 할 경우,

이 모듈의 writeFileSync()함수를 이용해 주면 되는데요.

첫번째 인자인 파일이름에 path를 포함한 파일이름을 넣어주고요.

data부분에는 아래와 같이 stringify()함수로 변환한 JSON string 데이터를 넣어주면 되겠습니다.

 

 

2-2. path모듈

path모듈을 사용해서 join함수를 이용하면,

맥이나 윈도우 리눅스등 플랫폼별로 사용되는 separator를 이용해서 path를 완성해 줍니다.

 

 

NodeJS에서는 현재 디렉토리의 이름을 가져올 수 있는,

'__dirname'을 제공해주고 있는데요.

이 값과 join함수를 이용해주면 현재위치에서 원하는 파일을 저장할 수 있습니다.

 

 

참고로 현재 디렉토리보다 상위의 디렉토리에 저장하고자 한다면 어떻게 하면 될까요?

예를 들어서, 현재 디렉토리가 'User/tester/project/dir'에 있는데,

tester디렉토리 아래에 있는 '/data'폴더에 저장한다면 어떻게 해야할까요?

아래와 같이 해 주면 됩니다. ".."는 상위의 디렉토리를 의미합니다.

 

path.join(__dirname, '..', '..', 'data')

 

 

현재 작업하는 코드가 존재하는 디렉토리내에서 파일을 생성하고자 한다면, 아래와 같이 해주면 됩니다.

참고로 openSync()함수는 파일이 없으면 생성해서 파일을 열어주는 역할을 합니다.

 

const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'pictures');

fs.openSync(filePath, 'test.txt');

 

2-3. JSON 파일 저장 구현하기

위에서 알아본 모듈들을 활용해서,

데이터를 JSON파일로 저장하는 코드는 다음과 같습니다.

path모듈을 이용하여 현재 작성하는 코드가 실행되는 디렉토리내에서,

testObj.json 파일로 json스트링형태로 전환된 데이터를 작성해 주고 있습니다.

 

const path = require('path');
const fs = require('fs');

const writeJsonFilePath = path.join(__dirname, "testObj.json");
fs.writeFileSync(writeJsonFilePath, JSON.stringify(myJson, null, 2))

 

이상으로 데이터를 JSON 스트링 타입으로 변환 후 파일로 저장하는 방법에 대해서 정리해 보았습니다.

 

728x90

댓글