Konwerter Dart na JSON
Wklej klasy Darta albo modele Fluttera. Dostajesz czysty JSON.
Co robi to narzędzie
Jak klepiesz aplikację Flutter i masz klasę modelu, której toJson() jeszcze nie napisałeś, albo po prostu potrzebujesz przykładowego ciała JSON do testu, to pisanie mapy ręcznie jest upierdliwe. Wklej Dart tutaj, a dostaniesz poprawny JSON — bez boilerplate’u, bez przepisywania. Działa z pojedynczą klasą, całym plikiem models.dart albo instancją zbudowaną z named argumentami.
Konwerter trzyma się tego, jak dart:convert faktycznie serializuje. Pola final wychodzą z wartościami. int i double zostają liczbami JSON. bool zostaje booleanem. DateTime staje się stringiem ISO-8601, w tym samym formacie, który produkuje DateTime.toIso8601String(). List<T> zamienia się w tablicę JSON; Map<String, dynamic> w obiekt JSON. Typy nullable (String?) dają null, gdy wartość jest null, albo samą wartość w przeciwnym razie.
Factory constructory, nazwane konstruktory oraz helpery fromJson/toJson są wszystkie rozpoznawane — w wyjściu ląduje to, co jest w instancji. Jak wkleisz kilka klas z jednego pliku (np. wyciągnięte z paczki z pub.dev), każda klasa robi się oddzielnym wpisem top-level, a zagnieżdżone instancje rozwijają się w zagnieżdżone obiekty JSON. Metody są pomijane. Enumy domyślnie serializują się po nazwie, zgodnie z popularną konwencją describeEnum.
Jak tego używać
Trzy kroki. Flow ten sam, czy wklejasz małą klasę, czy cały models.dart.
Wklej Darta (albo weź przykład)
Wrzuć swój kod Darta as-is do edytora po lewej. Definicja klasy, factory constructor, kilka klas albo instancja z named argumentami — wszystko gra. Kliknij Wczytaj przykład, żeby zobaczyć realistyczny przypadek.
Importy, adnotacje (@JsonSerializable(), @freezed) i komentarze możesz zostawić — parser ignoruje to, czego nie potrzebuje. Jak chcesz więcej o samym języku, dart.dev/language jest kanonicznym źródłem.
Wal w Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie czyta Darta, przechodzi przez każdą klasę i pole, i robi JSON w jednym przebiegu. W trakcie widać krótki wskaźnik ładowania.
Skopiuj JSON
Prawy panel zapełnia się wciętym JSON-em. Wrzuć go do testu Flutter, jako mock response dla Dio/http, do seeda Firestore albo do docsów API.
Kiedy to naprawdę ratuje dupę
Testy integracyjne Fluttera
Masz model Order z zagnieżdżonym Customer i OrderItems. Wklejasz klasę, dostajesz JSON, używasz jako mock response w teście integracyjnym.
Bootstrapowanie payloadów API
Zrób z klasy CreateOrderRequest gotowe ciało JSON do Postmana, curla albo szybkiego spike’a na backendzie — koniec klepania ręcznie.
Bootstrap json_serializable
Zanim odpalisz build_runner, widzisz dokładnie, jaki kształt wypluje <code>toJson()</code> — przydaje się, gdy projektujesz nowy model.
Trzymanie docsów w zgodzie z kodem
Generuj próbki JSON do README albo API reference prosto z modeli Darta, żeby dokumentacja podążała za faktycznym kodem.
Najczęstsze pytania
Można wkleić kilka klas naraz?
Jasne — wklej cały plik z modelami. Każda klasa top-level robi się oddzielnym wpisem JSON, a zagnieżdżone instancje rozwijają się w zagnieżdżone obiekty. Prywatne pola (z podkreślnikiem na początku) też są emitowane, tak samo jak zrobiłby to zwykły toJson().
Jak radzi sobie z DateTime, Duration i nullable?
DateTime wychodzi jako string ISO-8601 zgodnie z toIso8601String(). Duration to liczba mikrosekund. Pola nullable (String?) emitują null, gdy wartość jest null, albo samą wartość.
A co z List, Map i Set?
List<T> i Set<T> obie idą do tablic JSON — JSON nie ma typu set, więc elementy są po prostu wylistowane. Map<String, dynamic> staje się obiektem JSON. Zagnieżdżone generyki (List<Map<String, Order>>) są rozwijane rekurencyjnie.
Rozumie klasy freezed albo json_serializable?
Tak — adnotacje @freezed i @JsonSerializable są rozpoznawane, a podstawowe pola lądują w JSON-ie. Nie musisz odpalać wcześniej build_runnera; konwerter czyta deklarację, nie wygenerowany kod.
Jak emitowane są enumy?
Domyślnie używa się nazwy wartości enuma (OrderStatus.paid → "paid"). Zgadza się to z typową konwencją i trzyma JSON czytelnym dla człowieka bez dorabiania kodu mapującego.
Czy mój kod jest przechowywany?
Dart idzie na backend do konwersji i nie jest persistowany — nie logujemy payloadu. Przy wrażliwym kodzie modelu przejrzyj go albo wyczyść przed wklejeniem.
Inne narzędzia, które mogą ci się przydać
Dart na JSON to tylko jedna cegła. Te dobrze z nim grają: