본문으로 건너뛰기
yutils
예시

입력 (Extended JSON)

{
  "_id": { "$oid": "5f4a3b2c1d2e3f4a5b6c7d8e" },
  "createdAt": { "$date": "2026-05-13T00:00:00Z" },
  "count": { "$numberLong": "123456789" }
}

출력 (Plain JSON)

{
  "_id": "5f4a3b2c1d2e3f4a5b6c7d8e",
  "createdAt": "2026-05-13T00:00:00.000Z",
  "count": 123456789
}

참고

MongoDB DataGrip · mongoexport · Compass 가 토해내는 Extended JSON 을 일반 JSON 으로 변환. 반대 방향(plain → EJSON) 도 지원.

사용법 / 자주 묻는 질문

이런 경우 사용하세요

  • DataGrip · MongoDB Compass 에서 export 한 EJSON 을 일반 JSON 으로 변환
  • mongoexport 결과를 API 응답 모킹으로 사용
  • `$oid` · `$date` · `$numberLong` wrapper 제거
  • MongoDB 문서를 Postman · curl 본문에 그대로 사용 가능하게 정리
  • EJSON 문법 학습 — 어떤 BSON 타입이 어떻게 표현되는지

자주 묻는 질문

Q.Extended JSON 이 뭔가요?
A.MongoDB BSON 타입(ObjectId · Date · 64bit 정수 · Decimal128 등)을 JSON 안에 안전하게 표현하는 표준입니다. wrapper(`$oid`, `$date` 등) 로 타입을 보존.
Q.Strict mode 와 Relaxed mode 차이는?
A.Strict 는 모든 타입을 wrapper 로 감쌈, Relaxed 는 일반 JSON 으로 표현 가능한 값(int · 짧은 string)은 wrapper 없이 둠. 본 도구는 둘 다 인식.
Q.역방향 변환(plain → EJSON) 결과는 안전한가요?
A.기본 변환은 타입을 추론합니다 (예: 24자 hex string → ObjectId 후보). 정확한 BSON 타입이 필요하면 직접 wrapper 를 명시하세요.
재미있는 사실
  • MongoDB 의 BSON (Binary JSON) 은 2008년 10gen (현 MongoDB Inc.) 이 만든 binary 인코딩입니다. JSON 의 단점 — type 정보 부족 (Date 도 string? number?), 효율적 traverse 어려움 — 을 보완하려고 별도 데이터 타입 (Date, ObjectId, Decimal128, Binary 등) + length-prefix 구조를 박았어요.

    BSON Spec
  • Extended JSON 의 두 가지 모드 — Canonical 과 Relaxed. Canonical: `{"$date": {"$numberLong": "1234567890000"}}` (type 정확 보존). Relaxed: `{"$date": "2009-02-13T23:31:30Z"}` (human-readable, type 손실 가능). 사용 맥락에 따라 선택.

    MongoDB — Extended JSON
  • ObjectId 는 12 바이트 — 4바이트 timestamp + 5바이트 랜덤 + 3바이트 카운터. 시계만 정확하면 분산 환경에서도 거의 충돌 없는 ID 생성 가능 — UUID v7 (2024 RFC 9562) 의 timestamp-prefixed 설계가 ObjectId 의 영향을 많이 받았어요.

    MongoDB — ObjectId