이번 포스팅은 Node.js 에서 JSON 형식의 데이터를 만들 때, key(name) 부분을 정적인 특정 문자열을 넣어서 만드는 것이 아니라 동적으로 생성하는 방법을 포스팅해보려고 합니다.
사실, Node.js에서 JSON 형식의 데이터를 생성하는 것은 굉장히 간단합니다. 뭐, 요즘 뜨고 있는 언어들은 대부분 쉬운 듯합니다.
하지만, JSON 데이터를 만들려고 하다 보니, 한 가지 문제점을 발견했습니다.
바로, JSON 데이터의 key 값은 정적인 문자열을 넣어야 한다는 것이었습니다. 예를 들면, 아래와 같은 상황입니다.
아래 예제는 id와 number라는 정적인 Key로 Value를 가지고 있는 JSON 포맷 데이터입니다. 그런데, id와 number 값을 동적으로 바꾸면 어떻게 될까요?
1 var test1 = {
2 id : 'bs',
3 number : '1',
4 }
5 console.log(test1);
아래 예제는 id와 number를 동적으로 변경하는 경우입니다. 실행 보시면, 에러가 출력된다는 것을 알 수 있습니다. 단순히, 위의 예제와는 colomn1, colomn2에 값을 넣어서 해당 변수를 사용한 차이일 뿐인데, 에러가 발생한다는 뜻입니다.
1 var colomn1 = 'id';
2 var colomn2 = 'number';
3 var test2 = {
4 colomn1 : 'bs',
5 colomn2 : '1',
6 }
7 console.log(test2);
이번 포스팅은 이러한 문제를 해결할 수 있는 방법을 정리해보려고 합니다. 여러 방법들로 고민을 해보다가 결국 구글링으로 위와 같은 문제를 해결할 수 있었습니다.
바로, []를 이용하는 방법입니다. 사실 JSON 포맷을 만드는 것은 아래와 같이도 만들 수 있습니다.
4, 5번 라인을 보시면, map 자료구조에 Key로 colomn1, clomn2를 넣고, Value로 'bs', '1'을 넣었다는 것을 알 수 있습니다. 이와 같은 방법을 사용하면, Key를 동적으로 JSON 형식 데이터를 만들어낼 수 있다는 것을 알 수 있습니다.
1 var test4 = {};
2 var colomn1 = 'id';
3 var colomn2 = 'number';
4 test4[colomn1] = 'bs';
5 test4[colomn2] = '1';
6 console.log(test4);
위에 방법을 사용하게 되면, 아래와 같이 만들 수도 있겠죠.
아래 예제는 name, value를 배열로 만들어서 6번 라인부터 하나씩 map 형식으로 Key, Value 값을 넣은 방법입니다.
해당 방법을 사용하면, 여러 데이터를 리스트 형식으로 유지한 뒤에 간단하게 JSON 형식으로 만들 수 있겠죠?
1 var test5 = {};
3 var name = ['id', 'number'];
4 var value = ['bs', '1'];
5
6 for (idx in name) {
7 test5[name[idx]] = value[idx];
8 }
9 console.log(test5);
이 방법은 물론, 고차 배열 형식의 JSON 데이터도 만들 수 있습니다. 응용하면 말입니다. 아래 예제를 봐주세요.
이번 예제는 8~10 라인에서 JSON 형식으로 만든 후, 11 라인에서 test1에 arr라는 Key로 test2를 Value로 넣은 예제입니다.
1 #!/usr/bin/env node
2 var test1 = {};
3 var test2 = {};
5 var name = ['id', 'number'];
6 var value = ['bs', '1'];
7
8 for (idx in name) {
9 test2[name[idx]] = value[idx];
10 }
11 test1['arr'] = test2;
12 console.log(test1);
결과는 아래와 같습니다. 보통, JSON 형식은 아래보다 복잡해지는 경우가 많은데, 그럴 경우에도 위와 같은 방법을 사용한다면 간단하게 JSON 데이터를 생성할 수 있을 거예요.
{ arr: { id: 'bs', number: '1' } }
그럼, 이상으로 해당 포스팅에 대한 정리를 마치겠습니다. 혹시나, 위에 내용에 대해서 궁금하신 내용이 있거나 잘못된 내용이 있으면 댓글 남겨주세요.
모두에게 유용한 정보였으면 좋겠네요!
'프로그래밍 > etc. (Language)' 카테고리의 다른 글
[Javascript] 배열(Array)의 요소들이 특정 조건에 맞는 지 확인하는 방법 (some, every) (0) | 2019.06.29 |
---|---|
[Node.js] iconv-lite 이용하여 한글(여러 언어)에서 hex, utf-8로, hex에서 utf-8, 한글(여러 언어) 로 변환하기 (0) | 2019.06.22 |
[Node.js] 구글 트렌드에서 인기 급상승 검색어를 웹크롤링 해보자. (1) | 2019.05.23 |
[Node.js] iconv-lite 이용하여 한글(여러 언어) utf-8 에서 hex, mbcs 로 변환하기 (4) | 2019.04.17 |
[GIT] git 추적하지 않는 파일 (untracked files) 제거 하는 방법 (1) | 2019.01.20 |
댓글