JSON to Dart 변환기
JSON 객체 또는 여러 객체 예제가 담긴 배열로 외부 패키지에 의존하지 않는 Dart 모델 클래스를 만드세요. 변환기는 모든 예제 항목을 병합하고, 중첩 클래스를 만들며, 원래 JSON 키를 유지하면서 올바른 Null Safety 필드 타입과 fromJson 팩토리 생성자를 출력합니다. jsonEncode와 호환되는 출력이 필요하면 toJson 메서드를 추가할 수 있습니다. 입력한 예제와 생성된 코드는 이 브라우저에만 남으며 업로드되거나 URL에 포함되지 않습니다.
작동 방식
-
1
실제 데이터를 잘 나타내는 예제 붙여넣기
JSON 객체 하나 또는 객체 배열을 사용하세요. 여러 항목을 넣으면 누락된 필드, nullable 필드, 타입이 섞인 필드를 파악하는 데 도움이 됩니다.
-
2
Dart 옵션 선택
루트 클래스 이름을 지정하고, 모든 필드를 nullable로 만들지와 toJson 메서드를 포함할지를 선택하세요.
-
3
검토 후 내보내기
추론된 클래스를 확인한 다음 코드를 복사하거나 models.dart 파일을 기기에 다운로드하세요.
JSON이 Null Safety Dart 모델로 변환되는 방식
Dart 공식 dart:convert 문서에 따르면 jsonDecode()는 숫자, 문자열, Boolean, null, 리스트, 문자열 키를 가진 맵 등 JSON과 호환되는 값을 반환합니다. 모델 클래스 자체는 바로 JSON으로 인코딩할 수 없지만, jsonEncode()가 클래스의 toJson() 메서드를 호출하도록 만들 수 있습니다. 이 변환기는 json_serializable 어노테이션이나 패키지 의존성 없이 이러한 수동 직렬화 패턴을 생성합니다.
예를 들어 예제에 중첩된 주소를 가진 사용자가 있다고 가정해 보겠습니다. 생성된 User에는 final 필드와 명명된 매개변수 생성자가 포함됩니다. User.fromJson(Map<String, Object?> json)은 스칼라 값을 캐스팅하고 중첩 객체에는 UserAddress.fromJson()을 호출합니다. 예제 객체 중 하나라도 address가 없거나 null이면 타입은 UserAddress?가 되고, 팩토리는 객체를 만들기 전에 null을 확인합니다. toJson을 켜면 중첩 모델도 재귀적으로 jsonEncode()가 처리할 수 있는 맵으로 변환됩니다.
| JSON에서 확인된 값 | 생성되는 Dart 타입 |
|---|---|
| 정수 | int |
| 소수 | double |
| 정수와 소수가 함께 있음 | num |
| 텍스트 | String |
| 참 또는 거짓 | bool |
| 중첩 객체 | 생성된 모델 클래스 |
| 타입이 일정한 배열 | List<T> |
| 비어 있거나 호환되지 않는 중첩 배열 | List<Object?> |
| null만 있거나 타입이 충돌함 | Object? |
변환기는 루트 배열의 첫 항목만 믿지 않고 모든 객체를 확인합니다. 어떤 항목에서 필드가 빠져 있거나 값이 명시적으로 null이면 해당 필드는 nullable이 됩니다. 실제 API가 예제보다 불규칙하다면 모든 필드를 nullable로 만들 수도 있습니다. Dart Null Safety 안내서에서 설명하듯 타입은 기본적으로 null을 허용하지 않으며, null을 받으려면 ?가 필요합니다.
식별자 처리와 추론의 한계
JSON 키는 올바른 Dart 멤버 이름일 필요가 없습니다. 구두점을 제거하고 단어를 lowerCamelCase로 바꾸며, 예약어에는 안전한 접미사를 붙입니다. 이름이 충돌하면 결과가 매번 같도록 숫자 접미사를 추가합니다. 원래 키는 json['original-key']와 toJson() 맵에 그대로 유지됩니다. 중첩 클래스 이름에는 전체 경로를 사용하므로 서로 관련 없는 주소 객체가 조용히 하나의 클래스로 합쳐지지 않습니다.
예제 하나만으로 API 계약 전체를 확정할 수는 없습니다. JSON 문자열은 날짜, UUID, enum으로 자동 인식되지 않으며 빈 배열에서는 요소 타입을 알 수 없습니다. 객체 멤버 이름이 중복되면 JSON 파서가 일반적으로 마지막 값만 보존하므로 왕복 변환의 안전성도 보장할 수 없습니다. 운영 환경에서 사용하기 전에 생성된 모델을 API 문서나 스키마와 대조하세요. 브라우저 작업량을 제한하기 위해 입력 크기, 중첩 깊이, 추론되는 선언 수, 출력 크기에는 상한이 적용됩니다.
자주 묻는 질문
아니요. 파싱, 타입 추론, 코드 생성, 복사, 다운로드는 브라우저에서 이루어집니다. JSON과 생성된 Dart 코드는 당사 서버로 전송되거나 URL에 포함되지 않습니다.
네. Flutter는 Dart를 사용하므로 외부 패키지에 의존하지 않는 이 클래스를 Flutter 프로젝트에서 사용할 수 있습니다. 먼저 추론된 타입을 실제 API 계약과 대조하세요.
아니요. 패키지나 build_runner에 의존하지 않는 수동 fromJson과 선택형 toJson 메서드를 생성합니다.
null로 확인되거나 누락된 필드는 nullable이 됩니다. 예제가 실제 데이터를 충분히 대표하지 못한다면 생성되는 모든 필드를 nullable로 만들 수 있습니다.
아니요. 결과에는 확인된 값만 반영됩니다. 여러 객체 예제를 사용하고 공급자의 스키마나 문서와 결과를 비교하세요.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
EditorConfig 생성기
들여쓰기 스타일과 크기, 줄 끝, 문자 인코딩, 공백 규칙을 지정해 .editorconfig 파일을 생성하고 IDE와 편집기 전반의 형식을 일관되게 유지하세요.
이 도구는 다른 언어로도 제공됩니다
- JSON till Dart-konverterare [SV]
- محول JSON إلى Dart [AR]
- JSON-naar-Dart-converter [NL]
- Trình chuyển JSON sang Dart [VI]
- ตัวแปลง JSON เป็น Dart [TH]
- Conversor de JSON a Dart [ES]
- JSONからDartへの変換ツール [JA]
- Konverter JSON ke Dart [ID]
- Convertisseur JSON vers Dart [FR]
- JSON-in-Dart-Konverter [DE]
- Konwerter JSON na Dart [PL]
- Conversor de JSON para Dart [PT]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]