셸 코드 대신 데이터 입력
ObjectId()나 ISODate()는 JSON이 아닙니다. $oid와 $date를 사용하는 EJSON으로 먼저 내보내세요. 단일 값, 문서와 배열을 처리합니다.
- 예제와 지우기는 교체 미리보기를 표시합니다. 적용 후 한 번 실행 취소하면 입력과 결과가 함께 복원됩니다.
데이터베이스 및 SQL
엄격한 EJSON을 입력하고 두 가지 표현 방식과 정밀도 안내를 비교하세요.
텍스트는 이 브라우저에서 처리합니다. 데이터베이스 연결이나 문서 업로드는 없습니다.
엄격한 JSON 값 하나만 입력하세요. 셸 표현식, 주석, 중복 키는 거부합니다.
일반 정수는 Int32/Int64, 소수·지수 표기는 Double로 추론합니다. 문자열은 그대로 둡니다.
입력 500,000 UTF-16 단위, 깊이 100, 노드 50,000개, 출력 2,000,000자까지 지원합니다.
입력 또는 옵션이 변경되었습니다. 변환 후 내보내세요.
MongoDB 확장 JSON은 데이터베이스에서 꺼낸 문서에 $oid나 $numberDecimal 같은 객체가 보일 때 필요합니다. 보기 좋게 만들려고 이 키를 지우면 수신 시스템이 복원하는 BSON 유형도 달라집니다.
예제에는 JavaScript의 안전한 정수 범위를 넘는 일련번호가 들어 있습니다. 자릿수를 보존하는 것과 원래 타입을 보존하는 것을 구분해 살펴보세요. 변환 결과를 생성해도 입력 문서는 그대로 남습니다.
문서를 넘기기 전에 표현이 바뀌는 부분을 확인하세요.
MongoDB 확장 JSON은 Canonical 표준 형식으로 시작합니다. Relaxed 완화 형식은 유한 숫자와 해당 날짜를 간단히 표시하지만 ObjectId와 Decimal128의 래퍼는 유지합니다. 원문과 결과를 나란히 비교할 수 있습니다.
9007199254740993 같은 Long은 정확한 정수에서 출력합니다. 이 값이 수신 측에서 Number로 읽히면 반올림될 수 있다는 안내도 보여 줍니다. 변환 성공이 모든 소비자의 정밀도를 보장한다는 뜻은 아닙니다.
ObjectId()나 ISODate()는 JSON이 아닙니다. $oid와 $date를 사용하는 EJSON으로 먼저 내보내세요. 단일 값, 문서와 배열을 처리합니다.
타입 정보가 필요하면 Canonical을 선택하세요. Relaxed는 짧게 읽기 위한 모드이며, 출력에 남는 래퍼도 정상입니다.
자동 변환은 마지막 수정 후 350ms를 기다립니다. 끄면 예약된 처리를 취소하고 변환 버튼을 표시합니다.
EJSON 변환은 ObjectId, Decimal128, Int32, Int64, Double, 날짜, Binary, UUID, 정규식, Timestamp와 MinKey/MaxKey를 검증합니다. UUID는 하위 타입 04의 바이너리 래퍼로 정규화하고 정규식 옵션은 정렬합니다. 정규식 자체를 실행하지는 않습니다.
Canonical에서는 부호 있는 64비트 밀리초 문자열을 정확하게 유지합니다. JavaScript Date 범위 밖도 잘라내지 않습니다. Relaxed는 1970~9999년만 UTC ISO로 쓰며, 그 밖의 날짜는 밀리초 래퍼를 유지합니다.
일반 정수는 범위에 따라 Int32 또는 Int64가 되고 소수나 지수 표기는 Double이 됩니다. 긴 십진 숫자는 이진 64비트로 반올림될 수 있습니다. 날짜처럼 생긴 문자열이나 24자리 16진 문자열을 임의로 타입 값으로 바꾸지 않습니다.
Canonical은 숫자에도 래퍼를 사용하여 타입 정보를 우선합니다. Relaxed는 유한 숫자와 해당 범위의 날짜를 읽기 쉽게 씁니다. 둘 다 JSON 문법이며 ObjectId와 Decimal128 같은 타입은 두 모드에서 모두 래퍼를 유지합니다.
엄격한 JSON/EJSON으로 나온 텍스트라면 가능합니다. ObjectId("…"), ISODate("…"), NumberLong("…") 같은 셸 표현식은 거부합니다. 먼저 Extended JSON으로 내보내거나 문자열화하세요. 붙여 넣은 코드는 실행하지 않습니다.
Canonical의 $numberLong 문자열은 일반 JSON 파서가 숫자를 먼저 반올림하지 않도록 자릿수를 보호합니다. 이 도구의 Relaxed 출력은 완전한 정수 리터럴입니다. 안전 범위 밖 값은 수신 프로그램도 손실 없는 파서를 사용해야 합니다.
JavaScript Number의 이진 64비트와 Decimal128의 십진 정밀도는 다릅니다. $numberDecimal 문자열은 십진 표현과 타입을 함께 보존합니다. 따라서 Relaxed에서도 유지하며, 금액처럼 십진 정밀도가 필요한 값을 임의로 변환하지 않습니다.
표시된 한도 안에서 하나의 JSON 값으로 구성되어 있어야 합니다. 배열은 가능하지만 기본 줄 단위 문서 출력은 JSONL이므로 거부합니다. 개별 문서를 처리하거나 적절한 내보내기 옵션으로 배열을 먼저 만드세요.
예상과 다른 값이 있나요?