코딩을 하다보면 내가 받아온 변수의 타입,특히 json이라면 구조를 알아야 하는 경우가 많다.
물론 아래의 경우와 같이 변수를 내가 선언한 것이라면
const name:string= “kim”
변수 타입을 바로 알 수 있다.
하우에버! 미지의 API에서 데이터를 받아왔거나,
라이브러리에서 제공하는 데이터라면 파악이 필요하다.그래야 내가 가져다 쓸 수 있기 때문..
참고) JSON vs 객체
json과 객체는 다른 거다.
둘다 {} 중괄호 형식에, key, value를 사용하기에 얼핏 비슷해보이지만 ..
상황으로 보자.
1 객체 사용상황
객체가 훨씬 더 범위가 크다.
객체는 “김혜윤” “노트북”과 같은 속성과 행동이 있는 것을 포괄한다 .
좀 더 많은 행동을 요할 때 .
2.Json 사용상황
로직이나 함수는 커버 못한다.
텍스트 기반으로 key value를 저장해야할때
데이터 저장
그래서 사용시 객체와 json은 상호변환을 해주어야 할 일이 꽤 많다.
// 객체를 JSON으로 변환
const obj = { name: "홍길동", age: 30 };
const jsonString = JSON.stringify(obj); // '{"name":"홍길동","age":30}'
// JSON을 객체로 변환
const parsedObj = JSON.parse(jsonString); // { name: "홍길동", age: 30 }
상황을 들어보자.
어떤 미지의 API 에서 데이터를 받아왔고, 나는 그 결과값을 쓰고싶다.
// 응답이 JSON 배열이라고 가정
const data = await fetch("https://api.example.com/users")
.then(res => res.json());
// 첫 번째 요소 확인
const firstItem = data[0];
// key 리스트 추출
console.log(Object.keys(firstItem));
// ["id", "username", "email"]
응답
[
{
"id": 1,
"username": "Yoon",
"email": "yoon@example.com"
}
]
아하..
이렇게 오는 구나를 파악하고 나는 이제 저 데이터에서
이름을 username: 이라고 주는구나로 파악한 후 가져다 쓰면 된다.
const names = data.map(item => item.username);
console.log(names);
// ["Yoon", "혜윤"]
그렇다면 이렇게 코드 단위의 실행이 아닌,터미널 명령어로 바로 볼 순 없을까?
->있다
dotenv 라이브러리의 process.env객체를 예시로 들어보겠다.
이 라이브러리는 Secretkey 등의 개인정보를 깃헙에 올리지 않고,로컬 컴퓨터에서만 사용하고 싶을 때 사용되는 라이브러리이다.
이 라이브러리에서 제공되는 process.env를 사용하여 보안을 유지한다. 이 라이브러리에 대한 포스팅이 아니니
그냥 예시로만 이해해주면 좋겠다.
1. 타입먼저 보기
npm install dotenv를 했고 node에 env라이브러리가 올라와있으므로..
터미널에서 바로 typeof 명령어를 사용한다 .
npx ts-node -e "console.log(typeof process.env)"
#결과가 예쁘게 나옵니다.
object
그치만 이렇게 Object 라고만 나오므로 ..쓸모가 없다 .
내가 필요한건 어떤 키값이 있어서 어떻게 써먹을 수 있을지인데 ?~
그래서 이 명령어보다는 요걸 쓴다 .
⇒ keys
npx ts-node -e "
console.log('process.env 키들:', Object.keys(process.env));
console.log('처음 5개 키:', Object.keys(process.env).slice(0, 5));
"
결과 짜잔 ! !
process.env 키들: [
'TERM_PROGRAM',
'NODE',
'INIT_CWD',
'TERM',
'SHELL',
'HOMEBREW_REPOSITORY',
'TMPDIR',
'npm_config_global_prefix',
'TERM_PROGRAM_VERSION',
'ZDOTDIR',
'CURSOR_TRACE_ID',
'ORIGINAL_XDG_CURRENT_DESKTOP',
'MallocNanoZone',
'COLOR',
'npm_config_noproxy',
'npm_config_local_prefix',
'ZSH',
'USER',
'LS_COLORS',
'COMMAND_MODE',
'npm_config_globalconfig',
'SSH_AUTH_SOCK',
'VSCODE_PROFILE_INITIALIZED',
'__CF_USER_TEXT_ENCODING',
'npm_execpath',
'PAGER',
'LSCOLORS',
'PATH',
'npm_package_json',
'_',
'npm_config_userconfig',
'npm_config_init_module',
'USER_ZDOTDIR',
'__CFBundleIdentifier',
'npm_command',
'PWD',
'npm_lifecycle_event',
'EDITOR',
'LANG',
'npm_config_npm_version',
'VSCODE_GIT_ASKPASS_EXTRA_ARGS',
'XPC_FLAGS',
'npm_config_node_gyp',
'XPC_SERVICE_NAME',
'VSCODE_INJECTION',
'SHLVL',
'HOME',
'VSCODE_GIT_ASKPASS_MAIN',
'HOMEBREW_PREFIX',
'npm_config_cache',
'LESS',
'LOGNAME',
'npm_lifecycle_script',
'VSCODE_GIT_IPC_HANDLE',
'npm_config_user_agent',
'VSCODE_GIT_ASKPASS_NODE',
'GIT_ASKPASS',
'INFOPATH',
'HOMEBREW_CELLAR',
'npm_node_execpath',
'npm_config_prefix',
'COLORTERM'
]
처음 5개 키: [ 'TERM_PROGRAM', 'NODE', 'INIT_CWD', 'TERM', 'SHELL' ]
'백엔드 엔지니어링 > Node.js' 카테고리의 다른 글
| 테스트코드를 작성해보다.(jest사용) (5) | 2025.11.30 |
|---|---|
| Javascript 패키지 매니저:: pnpm/npm/yarn (0) | 2025.10.07 |
| node::하나의 맥에서 레거시와 최신버전을 동시에 써야할 때 필요한 sw들(nvm,로제타2) (0) | 2025.09.20 |
| [Node]package.json에서 dependencies와 devDependencies를 분리 하는 이유 (feat typescript) (0) | 2025.09.01 |