Wklej Swift po lewej i kliknij "Konwertuj" — zamienimy to na JSONWklej kod Swift

Co robi to narzędzie

Jeśli kiedyś definiowałeś struct w Swifcie, robiłeś go Codable i orientowałeś się, że potrzebujesz tylko JSON-a — bez odpalania playground’a ani symulatora — to narzędzie robi dokładnie to. Wklej Swift tutaj i dostań poprawny JSON, bez dotykania JSONEncoder, Xcode’a czy Swift Package Managera. Obsługuje pojedynczą instancję structa, cały plik z kilkoma typami albo coś z zagnieżdżonymi tablicami i optionalami — efekt ten sam: czysty dokument JSON z zachowanymi wszystkimi property.

Konwerter trzyma się tego, jak wartości Swiftowe faktycznie serializują się przez JSONEncoder. String, Int, Double, Bool lądują w oczywistych odpowiednikach JSON-a. Tablice [Item] stają się tablicami JSON; słowniki [String: V] stają się obiektami JSON. Optional<T> z nil daje JSON null (albo jest pomijany, zależnie od strategii enkodera). UUID wychodzi jako standardowy string hex, Date jako string ISO-8601, a URL jako string. Enumy z raw value oddają raw value — dokładnie to samo zachowanie, co w Foundation.JSONEncoder.

Customowe CodingKeys są respektowane — jeśli zmieniasz nazwę property na potrzeby JSON-a (case shippingAddress = "shipping_address"), output używa tej nowej nazwy. Zagnieżdżone typy Codable rozwijają się inline. Wklej kilka structów naraz, a każdy trafi jako top-level wpis do outputu. Jeśli chcesz pojechać głębiej w to, jak Swift modeluje JSON-a, źródła są w apple/swift, a Hacking with Swift ma naprawdę czytelne wyjaśnienia protokołu Codable.

Jak używać

Trzy kroki. Działa tak samo, czy wklejasz jedną instancję structa, czy cały plik z modelami.

1

Wklej swojego Swifta (albo wczytaj przykład)

Wrzuć Swifta do edytora po lewej as-is. Struct, class, enum z associated values, kilka typów albo zagnieżdżone tablice i słowniki — wszystko gra. Kliknij Wczytaj przykład, żeby najpierw zobaczyć realistyczny przykład.

Nie musisz usuwać import Foundation ani atrybutów @available. Zostaw składnię Swifta jak jest — parser sobie poradzi.

2

Kliknij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie czyta Swifta, zachowuje każdy property i zagnieżdżony typ, i wypluwa JSON-a w jednym przebiegu. W trakcie leci krótki wskaźnik ładowania.

3

Skopiuj JSON-a

Prawy panel zapełnia się wciętym JSON-em. Skopiuj go do swojego testu URLSession, do fixture’a MockURLProtocol, do przykładów OpenAPI albo do klienta REST. I to cały cykl.

Kiedy to się naprawdę przydaje

Fixture’y do API w iOS

Masz request-struct do wywołania <code>URLSession</code> i potrzebujesz JSON-a do Postmana albo testu. Wklej structa, weź JSON-a, idziesz dalej.

Odpowiedzi mock serwera

Zamień swoje response’owe typy <code>Codable</code> w JSON-a, który wrzucisz do mock serwera, <code>MockURLProtocol</code> albo do pliku z nagraną odpowiedzią — bez żadnego wywołania <code>JSONEncoder</code>.

Testy backendu Vapor / SwiftNIO

Serwis Vapor z 20 typami <code>Content</code>. Generujesz JSON-owe seedy do testów integracyjnych bez napisania choćby jednego encode’a.

Dokumentacja i przykłady OpenAPI

Generuj przykłady JSON-owe do swojej specki OpenAPI albo reference’u API bezpośrednio z prawdziwych modeli, żeby doc trzymał się w synchronie.

Częste pytania

Czy typ musi być zgodny z Codable?

Typ nie musi być realnie zgodny w Twoim kodzie, żeby narzędzie zadziałało — konwerter czyta kształt i produkuje JSON-a bezpośrednio. W Twojej apce Codable (albo przynajmniej Encodable) to sposób, żeby ten sam efekt uzyskać w runtime’ie przez JSONEncoder.

Czy respektuje customowe CodingKeys?

Tak. Jeśli Twój typ definiuje enum CodingKeys: String, CodingKey z customowymi raw values (case shippingAddress = "shipping_address"), output użyje tych zmienionych kluczy.

Jak są obsługiwane Optionale, Daty i UUID-y?

Optional<T> z nil staje się JSON-owym null. Date wychodzi domyślnie jako string ISO-8601 (tak jak JSONEncoder.DateEncodingStrategy.iso8601). UUID leci jako standardowy string hex. URL jako string.

A co z enumami z associated values?

Enumy z raw value oddają wartość wprost. Enumy z associated values wychodzą jako tagged object — dokładnie ten sam kształt, jaki sam Swift produkuje, gdy enkodujesz case z associated values.

Czy mój kod jest zapisywany?

Twój kod leci do backendu, żeby przekonwertować go, i nie jest utrzymywany dalej — nie logujemy payloadu. Wrażliwy kod warto przejrzeć przed wklejeniem.

Czy to działa dla modeli SwiftUI i property wrapperów?

Tak — property wrappery w stylu @Published są odpakowywane do wartości wewnętrznej. Klasy ObservableObject z property @Published serializują się czysto. Typy widoków specyficzne dla SwiftUI nie są danymi do serializacji, ale każdy model stojący za Twoimi widokami jest fair game.

Inne narzędzia, które mogą się przydać

Swift → JSON to tylko kawałek układanki. Te grają z nim dobrze: