Wklej Darta po lewej i kliknij "Konwertuj" — zrobimy z niego JSONWklej kod Darta

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.

1

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.

2

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.

3

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ą: