JSON na Swift Struct
Generuj struktury Swift zgodne z Codable z JSON. Bezplatnie, w przegladarce.
Do czego sluzy
Od JSON do struktury Swift Codable
Gotowy dla iOS i SwiftUI
Generuje struktury kompatybilne z URLSession, Alamofire, SwiftUI i Combine. Wklej bezposrednio do Xcode.
W 100% prywatny
Twoj JSON z API nigdy nie opuszcza przegladarki. Bez rejestracji, bez telemetrii.
Poprawny Codable
Automatyczne CodingKeys dla snake_case, Optional dla typow nullable, poprawne typy (Int, Double, Bool). Idiomatyczny kod.
Natychmiastowy
Struktury generowane w czasie rzeczywistym podczas pisania. Bez przyciskow, bez oczekiwania.
Jak to działa
Trzy kroki, żadnych komplikacji
Wklej swoj JSON
Wklej JSON z Twojego API lub odpowiedzi webowej. Dziala z zagniezdzonymi obiektami, tablicami i dowolna poprawna struktura JSON.
Natychmiastowe generowanie
Narzedzie automatycznie generuje struktury Swift zgodne z protokolem Codable z kluczami CodingKeys tam, gdzie sa potrzebne.
Skopiuj kod
Skopiuj wygenerowane struktury i uzyj ich bezposrednio w projekcie iOS, macOS lub SwiftUI.
FAQ
Masz pytania?
Codable to alias typu wprowadzony w Swift 4 (WWDC 2017), laczacy dwa protokoly: Encodable (mozna konwertowac do zewnetrznego formatu, takiego jak JSON) i Decodable (mozna tworzyc z zewnetrznego formatu). Typ zgodny z Codable moze zarowno serializowac, jak i deserializowac dane. Zgodnosc uzyskuje sie automatycznie przez synteze kompilatora, jesli wszystkie wlasciwosci rowniez sa zgodne z Codable.
Dla modeli danych JSON preferowane sa struktury z kilku powodow: struktury sa typami wartosciowymi (kopiuja, a nie odwoluja), unikajac problemow ze wspoldzielonym stanem; kompilator moze je lepiej optymalizowac; a w SwiftUI struktury lepiej wspolpracuja z reaktywnym modelem danych. Klasy (typy referencyjne) maja swoje miejsce, gdy potrzebujesz dziedziczenia lub tozsamosci obiektow, ale dla modeli API struktury sa zalecana praktyka.
CodingKeys to zagniezdzone wyliczenie mapujace nazwy wlasciwosci Swift na nazwy kluczy w JSON. Jest potrzebne, gdy nazwy JSON (zazwyczaj snake_case w REST API) roznia sie od konwencji Swift (camelCase). Na przyklad jesli JSON zawiera first_name, CodingKey mapuje ten klucz na pole firstName struktury. Bez CodingKeys Swift oczekuje, ze nazwy JSON beda dokladnie odpowiadac nazwom wlasciwosci.
W Swift typ Optional (oznaczony znakiem ?) moze miec wartosc lub byc nil. Gdy pole JSON moze byc nieobecne lub null, wlasciwosc struktury jest zadeklarowana jako Optional: var email: String? zamiast var email: String. JSONDecoder Foundation automatycznie obsluguje deserializacje: jesli klucz jest nieobecny w JSON lub jego wartosc jest null, wlasciwosc jest ustawiana na nil bez zgłaszania bledu.
Typowy przeplyw URLSession + Codable wyglada nastepujaco: URLSession.shared.dataTask zwraca Data; JSONDecoder().decode(MyStruct.self, from: data) konwertuje Data na strukture; wynik jest uzywany w interfejsie uzytkownika w watku glownym. W Swift 5.5+ z async/await uzyj let data = try await URLSession.shared.data(for: request), a nastepnie let object = try JSONDecoder().decode(MyStruct.self, from: data). Ten wzorzec jest fundamentem kazdej integracji API w nowoczesnym iOS.
Swift dla iOS/macOS, protokol Codable (2017) i integracja API z SwiftUI
Swift zostal zaprezentowany przez Apple na WWDC 2014 jako nastepca Objective-C do tworzenia aplikacji na iOS, macOS, watchOS i tvOS. Wraz z wprowadzeniem Codable w Swift 4 (WWDC 2017) praca z JSON zostala radykalnie uproszczona. Przed Codable programisci uzywali bibliotek zewnetrznych, takich jak SwiftyJSON lub rozszerzenia Codable Alamofire. Z natywnym Codable potrzebujesz tylko JSONDecoder i dobrze typowanych struktur, bez zewnetrznych zaleznosci.
SwiftUI, wprowadzony na WWDC 2019, umocnil uzycie struktur jako modeli danych. Architektura SwiftUI oparta na typach wartosciowych i protokole View jako strukturze doskonale pasuje do modeli Codable. Wzorce takie jak MVVM (Model-View-ViewModel) w SwiftUI uzywaja @Published w ObservableObject ViewModels ze strukturami Codable jako modelami, tworzac przewidywalny i testowalny przeplyw danych.
Ze Swift 5.5 (WWDC 2021) i wprowadzeniem async/await konsumowanie REST API stalo sie jeszcze czystsze. URLSession.shared.data(for:) jest teraz funkcja async eliminujaca zagniezdzone handlery uzupelniania (callback hell). W polaczeniu z JSONDecoder kompletny wzorzec pobierania i dekodowania to tylko 3 wiersze kodu. To narzedzie generuje struktury Codable potrzebne do tego wzorca, przetwarzajac wszystko w Twojej przegladarce bez wysylania danych na jakiekolwiek serwery.