Konwerter JSON na Dart
Generuj klasy modeli Dart bez dodatkowych zależności na podstawie obiektu JSON lub tablicy przykładowych obiektów. Konwerter łączy informacje ze wszystkich elementów tablicy, tworzy klasy zagnieżdżone, zachowuje oryginalne klucze JSON i wyznacza typy pól zgodne z null safety wraz z konstruktorem factory fromJson. Opcjonalne metody toJson zapewniają wynik zgodny z jsonEncode. Próbka i wygenerowany kod pozostają w tej przeglądarce, nie są wysyłane ani umieszczane w adresie URL.
Jak to działa
-
1
Wklej reprezentatywną próbkę
Użyj obiektu JSON lub tablicy obiektów. Kilka elementów pomaga wykryć pola brakujące, nullable i występujące z różnymi typami.
-
2
Wybierz opcje Dart
Nadaj nazwę klasie głównej, zdecyduj, czy wszystkie pola mają być nullable, i w razie potrzeby dodaj metody toJson.
-
3
Sprawdź i wyeksportuj
Przejrzyj wywnioskowane klasy, a następnie skopiuj kod lub pobierz lokalny plik models.dart.
Jak JSON staje się modelem Dart z null safety
Oficjalna dokumentacja biblioteki dart:convert wyjaśnia, że jsonDecode() tworzy wartości zgodne z JSON, takie jak liczby, ciągi znaków, wartości logiczne, null, listy i mapy z kluczami tekstowymi. Klasy modelu nie można bezpośrednio zakodować jako JSON, ale jsonEncode() może wywołać jej metodę toJson(). Konwerter generuje taki ręczny schemat serializacji bez adnotacji json_serializable i zależności od dodatkowych pakietów.
Załóżmy, że próbka zawiera użytkownika z zagnieżdżonym adresem. Wygenerowana klasa User ma pola final i konstruktor z nazwanymi parametrami. User.fromJson(Map<String, Object?> json) rzutuje wartości skalarne i wywołuje UserAddress.fromJson() dla zagnieżdżonego obiektu. Jeśli address nie występuje lub ma wartość null w którymkolwiek obiekcie próbki, jego typ zmienia się na UserAddress?, a factory sprawdza wartość przed utworzeniem instancji. Po włączeniu toJson modele zagnieżdżone są rekurencyjnie zamieniane na mapy obsługiwane przez jsonEncode().
| Wartość zaobserwowana w JSON | Wygenerowany typ Dart |
|---|---|
| Liczba całkowita | int |
| Liczba dziesiętna | double |
| Próbki całkowite i dziesiętne | num |
| Tekst | String |
| Wartość logiczna | bool |
| Obiekt zagnieżdżony | Wygenerowana klasa modelu |
| Jednorodna tablica | List<T> |
| Pusta lub niezgodna tablica zagnieżdżona | List<Object?> |
| Tylko null albo sprzeczne wartości | Object? |
Konwerter bada każdy obiekt w tablicy głównej, zamiast opierać się wyłącznie na pierwszym elemencie. Pole staje się nullable, gdy nie występuje w jednym z obiektów albo ma jawną wartość null. Możesz również ustawić wszystkie pola jako nullable, jeśli rzeczywiste API jest mniej przewidywalne niż próbka. Przewodnik Dart po null safety przypomina, że typy domyślnie nie dopuszczają null i wymagają znaku ?, aby ją przyjąć.
Obsługa identyfikatorów i ograniczenia wnioskowania
Klucze JSON nie muszą być poprawnymi składowymi Dart. Znaki interpunkcyjne są usuwane, słowa zamieniane na lowerCamelCase, słowa zastrzeżone otrzymują bezpieczny przyrostek, a kolizje deterministyczne przyrostki liczbowe. Oryginalny klucz pozostaje bez zmian w json['original-key'] i mapie toJson(). Nazwy klas zagnieżdżonych uwzględniają pełną ścieżkę, dzięki czemu niezależne obiekty adresów nie zostaną przypadkowo scalone.
Jedna próbka nie potwierdza całego kontraktu API. Ciągi JSON nie są automatycznie datami, identyfikatorami UUID ani enumami, a pusta tablica nie ujawnia typu elementów. Powtórzone nazwy składowych również nie gwarantują wiernej konwersji w obie strony, ponieważ parsery JSON często zachowują ostatnią wartość. Przed użyciem produkcyjnym porównaj modele z dokumentacją lub schematem API. Limity rozmiaru danych, głębokości, liczby deklaracji i wyniku utrzymują pracę przeglądarki w bezpiecznych granicach.
Najczęściej zadawane pytania
Nie. Parsowanie, wnioskowanie, generowanie kodu, kopiowanie i pobieranie odbywają się w przeglądarce. JSON i kod Dart nie są przesyłane na nasze serwery ani umieszczane w adresie URL.
Tak. Flutter korzysta z języka Dart, więc te klasy bez dodatkowych zależności można użyć w projekcie Flutter. Najpierw porównaj wywnioskowane typy z rzeczywistym kontraktem API.
Nie. Generuje ręczne metody fromJson i opcjonalne metody toJson, bez zależności od pakietu lub build_runner.
Pole zaobserwowane jako null lub brakujące staje się nullable. Jeśli próbka nie jest reprezentatywna, możesz oznaczyć wszystkie generowane pola jako nullable.
Nie. Wynik odzwierciedla tylko zaobserwowane wartości. Użyj kilku przykładowych obiektów i porównaj rezultat ze schematem lub dokumentacją dostawcy.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator EditorConfig
Wygeneruj plik .editorconfig z własnymi regułami stylu i rozmiaru wcięć, końca linii, kodowania i białych znaków, aby uzyskać spójne formatowanie w różnych IDE i edytorach.
Walidator adresów e-mail
Zweryfikuj adres e-mail: sprawdzenie składni RFC 5322, sprawdzenie rekordu MX w czasie rzeczywistym oraz szczegóły dotyczące części lokalnej, domeny i długości. Żadna wiadomość nie jest wysyłana.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Narzędzie jest dostępne w innych językach
- JSON till Dart-konverterare [SV]
- محول JSON إلى Dart [AR]
- Convertisseur JSON vers Dart [FR]
- Konverter JSON ke Dart [ID]
- JSON-in-Dart-Konverter [DE]
- JSON to Dart 변환기 [KO]
- JSON-naar-Dart-converter [NL]
- JSONからDartへの変換ツール [JA]
- ตัวแปลง JSON เป็น Dart [TH]
- Conversor de JSON a Dart [ES]
- Trình chuyển JSON sang Dart [VI]
- Conversor de JSON para Dart [PT]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]