AI 보이는 추론 실험실

JSON으로 바꾸면 undefined 항목은 어디로 갈까?

같은 값을 객체·배열·단독값에 넣어 변환하고, 누락·null·JSON 문자열 미생성을 비교합니다.

탐구게시 2026-10-18T23:05:34.867Z읽기·실험 약 8분확인 문제 2개규칙 기반 실행한국논리학협회 자체 제작제작·검수 LTCT 편집부

작업실에서 세 모둠의 색인 카드를 비교하는 남성과 선반 곁의 작은 공식 올리
AI 생성 학습 장면입니다. 사진의 자료와 개수는 실측 근거가 아닙니다. · 주제 이해를 돕기 위한 AI 생성 이미지 · LTCT 자체 제작
오늘의 질문

AI가 {value: undefined}와 [undefined]를 같은 ‘빈값’으로 설명하면 전송될 자료의 차이를 놓칠까요?

undefined를 객체에 넣으면 항목 생략, 배열에 넣으면 null, 단독으로 변환하면 JSON 문자열 미생성으로 갈리는 그림
undefined를 객체에 넣으면 항목 생략, 배열에 넣으면 null, 단독으로 변환하면 JSON 문자열 미생성으로 갈리는 그림 · 한국논리학협회 자체 제작
그림 크게 보기 ↗
01

값을 담은 구조부터 구별합니다

자바스크립트의 undefined(언디파인드, 정의되지 않은 값)는 JSON이 직접 표현할 수 있는 값이 아닙니다. JSON(제이슨)은 문자열로 자료를 교환하는 형식입니다. JSON.stringify는 자바스크립트 값을 이 형식의 문자열로 바꿉니다. 모든 입력을 모양 그대로 옮기는 복사 기능은 아닙니다.

이 활동은 값 하나를 세 위치에 넣습니다. 객체는 {value: 값}처럼 이름과 값을 짝지으며, 배열은 [값]처럼 순서 있는 칸에 값을 놓습니다. 마지막은 값만 단독으로 넘깁니다. 사용자 정의 변환 함수와 toJSON 메서드는 사용하지 않습니다. 구조를 고정하고 값만 바꾸어 차이를 비교합니다.

02

같은 undefined도 세 결과가 다릅니다

객체의 value가 undefined이면 그 이름과 값 쌍이 생략되어 결과 문자열은 {}입니다. 배열의 원소가 undefined이면 해당 칸은 null(널, JSON의 빈값 표시)로 바뀌어 [null]이 됩니다. 배열에서 뒤 항목의 위치를 한 칸씩 당기는 방식이 아닙니다.

undefined를 단독으로 넘기면 반환값 자체가 undefined입니다. 화면의 ‘JSON 문자열이 생성되지 않음’은 그 상태를 설명하는 안내 문구이며 실제 JSON 결과가 아닙니다. 결과가 빈 문자열이나 문자열 "undefined"라고 보고하면 또 다른 자료를 만들게 됩니다. 이 셋을 구별하려고 활동은 결과와 반환 자료형을 함께 표시합니다.

03

null이나 NaN으로 바꾸면 무엇이 보존될까요

값을 null로 바꾸면 객체에서도 value라는 이름이 남아 {"value":null}이 됩니다. 이름이 없는 {}와 이름은 있고 값이 null인 객체는 다릅니다. 이어서 NaN(낸, 유효한 수치가 아님)이나 Infinity(인피니티, 무한대)를 선택하면 기본 변환에서 null로 바뀝니다. 출력만으로 원래 null이었는지 수치 계산에 문제가 있었는지 복원할 수 없습니다.

활동의 0과 문자열 "0"도 비교하세요. 결과의 따옴표는 장식이 아니라 숫자와 문자열을 구별합니다. AI가 외부 전송 전에 확인할 것은 변환 성공 여부뿐 아니라, 어떤 항목이 사라지고 어떤 의미 차이가 합쳐졌는지입니다. 실제 API에서 생략과 null이 각각 ‘유지’인지 ‘삭제’인지 등의 의미는 해당 계약을 따로 확인해야 합니다. 이 글은 그런 서버 동작을 가정하지 않습니다.

직접 확인하기 · 규칙 기반 실행

같은 값을 세 위치에서 변환하기

값 undefined에서 객체·배열·단독값의 결과와 자료형을 비교합니다. null·NaN·Infinity를 차례로 선택하고 서로 구별되지 않는 출력을 찾습니다. 숫자 0과 문자열 "0"의 따옴표 차이를 확인하고 초기화합니다.

직접 바꾸어 확인하기

객체

{}

반환 자료형: string

배열

[null]

반환 자료형: string

단독값

JSON 문자열이 생성되지 않음

반환 자료형: undefined

관계를 읽고, 다른 상황에 적용하기

두 문제로 생각 확인

1기본 JSON.stringify({value:undefined})의 결과 문자열은?
2JSON.stringify([NaN])과 JSON.stringify([null]) 결과만으로 원래 값을 구별할 수 있을까요?

두 문제의 답을 모두 선택하면 해설을 볼 수 있습니다.

나의 설명으로 마무리

오늘 발견한 관계

0 / 4,000자

메모는 현재 기기의 브라우저에만 보관됩니다. 계정이나 다른 기기에는 동기화되지 않습니다.

출처와 제작 안내

원문을 참고해 설명·도표·문항·실험을 새로 작성했습니다. 별도 표시가 없는 사례와 수치는 학습을 위한 가상 예시입니다. 원문 번역이나 실제 모델의 성능 평가 자료가 아닙니다.

  1. JSON.stringify() ↗MDNMDN · JSON.stringify()

    undefined의 위치별 처리, null·NaN·Infinity 변환. 자체3구조×6값 비교.