Konwerter Ruby na JSON
Wklej klasy, hashe albo obiekty Ruby. Dostań czysty JSON.
Co robi to narzędzie
Jeśli masz klasę Ruby z kupą atrybutów i potrzebujesz payloadu JSON do testu, wywołania API albo fixture'a, klepanie hasha z ręki to czysta męka. Wklej tu Ruby i dostaniesz poprawny JSON z każdym polem na miejscu. Czy to pojedyncza klasa Order, zagnieżdżony Customer z adresami, czy cały plik z definicjami modeli z Rails — wynik zgadza się z tym, co dostałbyś z to_json w runtime.
Konwerter rozumie, jak Ruby naprawdę serializuje. Stdlibowa biblioteka json zamienia klucze :symbol w stringi (bo JSON ma tylko klucze stringowe), nil staje się null, a Time / Date wychodzą jako stringi ISO-8601. Hashe z kluczami symbolowymi i stringowymi są normalizowane, a tablice z mieszanymi typami zostają nietknięte. Zagnieżdżone instancje — Address wewnątrz Order — są rozwijane do zagnieżdżonych obiektów JSON, nie stringifikowane. Szczegóły są na ruby-doc.org.
Wklej cały plik z gema albo ze swojej apki Rails i każda klasa najwyższego poziomu wychodzi jako własny wpis JSON, z zmiennymi instancji ustawianymi w initialize wciągniętymi do wyjścia. attr_accessor, attr_reader i gołe @ivars — wszystko jest łapane. Jeśli parser widzi Struct albo OpenStruct, traktuje członków tak samo. Metody są pomijane — do JSON-a trafiają tylko dane.
Jak tego użyć
Trzy kroki. Działa tak samo, czy wkleisz kilka linijek, czy cały folder models/.
Wklej swój Ruby (albo spróbuj przykład)
Rzuć swojego Ruby do lewego edytora tak, jak jest. Definicja klasy, literał hasha, kilka klas albo instancja .new — wszystko gra. Kliknij Wczytaj przykład, jeśli chcesz najpierw zobaczyć realistyczny case.
Nie musisz ciąć kodu — zostaw składnię Ruby, linie require i komentarze jak są. Parser ignoruje to, co nie jest danymi. Do edge case'ów doki JSON stdlib to dobra lektura.
Kliknij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie czyta Ruby, zachowuje każdą klasę i atrybut, i produkuje JSON w jednym przebiegu. Podczas działania zobaczysz krótki wskaźnik ładowania.
Skopiuj JSON
Prawy panel wypełnia się wciętym, zgodnym ze specyfikacją JSON-em. Skopiuj go do requestu Postmana, fixture'a testowego, pliku seeds w Rails albo do doków swojego API.
Kiedy to się naprawdę przydaje
Fixture'y testowe dla RSpec
Masz model Order z 20 atrybutami i potrzebujesz JSON-a, żeby stubnąć zewnętrzny serwis. Wklej klasę, weź payload, wrzuć do speca.
Seedowanie apki Rails
Zamień kupę linijek <code>Product.new(...)</code> w plik JSON seed dla db/seeds albo loadera danych stage — bez klepania z ręki.
Dokumentacja pasująca do Twoich modeli
Generuj przykłady JSON do README albo referencji API prosto ze swoich klas Ruby, żeby dokumentacja nigdy nie odbiegała od kodu.
Debugowanie problemów z serializacją
Kiedy <code>to_json</code> odbija, wklej Ruby tutaj, żeby zobaczyć oczekiwany kształt JSON i porównać go z tym, co Twoja apka faktycznie wysyła.
Częste pytania
Mogę wkleić kilka klas naraz?
Tak. Wklej cały plik. Każda klasa najwyższego poziomu wychodzi jako własny wpis JSON, z zagnieżdżonymi klasami rozwiniętymi do zagnieżdżonych obiektów. Metody są ignorowane — do wyjścia trafiają tylko zmienne instancji i ich wartości.
Jak obsługiwane są symbole i klucze stringowe?
JSON ma tylko klucze stringowe, więc :name staje się "name" — to samo zachowanie co stdlibowa biblioteka json. Jeśli masz hash mieszający klucze symbolowe i stringowe, oba są normalizowane do stringów w wyjściu.
A Time, Date i BigDecimal?
Time i DateTime wychodzą jako stringi ISO-8601. Date to string daty ISO. BigDecimal staje się liczbą JSON. nil to null. Range'e i regexy są stringifikowane — reszta standardowych typów mapuje się tak, jak robi to domyślny to_json Ruby'ego.
Ogarnia Struct i OpenStruct?
Tak. Struct z członkami :name, :price jest serializowany jako obiekt JSON z tymi kluczami. Tak samo dla OpenStruct — dynamiczne atrybuty są łapane i wypisywane.
Czy mój kod jest zapisywany?
Twój Ruby idzie do backendu do konwersji i nie jest trzymany — nie logujemy payloadu. Jak zawsze z narzędziami online: jeśli kod jest naprawdę wrażliwy, najpierw rzuć na niego okiem.
A co jeśli kod ma metody albo bloki?
Metody i bloki są pomijane — to nie są dane. Do JSON-a trafia tylko nazwa klasy, zmienne instancji z initialize i wartości literalne, więc reszta modelu i tak przechodzi bez problemu.
Inne narzędzia, które mogą się przydać
Ruby na JSON to jeden kawałek. Te dobrze z nim działają: