logo
GeekFormat

JSON naar Swift

Gratis online JSON naar Swift converter. Converteer met één klik API-reacties, configuratiebestanden of log-JSON naar pure Swift struct/class type-declaraties. Geen registratie, geen upload: realtime generatie in uw browser. Perfect voor snelle modellering in iOS-, macOS-, watchOS- en tvOS-projecten.

Gerelateerde aanbevelingen

Over JSON naar Swift: JSON-gegevens omzetten naar native typen van het Apple-ecosysteem

JSON naar Swift is het proces van het automatisch converteren van JSON-gegevens (objecten of arrays) naar Swift struct/class type-declaraties. JSON is de de facto standaard voor REST API's, configuratiebestanden en analyselogboeken, terwijl Swift de primaire ontwikkeltaal is voor iOS-, macOS-, watchOS- en tvOS-apps, evenals een kerntaal voor server-side frameworks zoals Vapor. Tijdens ontwikkeling is het vaak nodig om de bijbehorende Swift-typen te schrijven voor JSON die door API's wordt geretourneerd; ze handmatig schrijven is tijdrovend en vatbaar voor het weglaten van optionele velden. Het doel van deze tool is om dit proces te automatiseren.

Deze tool gebruikt quicktype-core om conversie lokaal in de browser uit te voeren. quicktype is een meertalige structuurgenerator; deze tool schakelt de just-types en no-comments opties in voor Swift, dus de uitvoer is schone struct/class eigenschapsdeclaraties zonder serialisatieannotaties zoals Codable, Decodable of Encodable, en zonder import-instructies of kopopmerkingen. Deze "pure typen" stellen ontwikkelaars in staat vrijelijk protocollen toe te voegen, toegangscontrole aan te passen of naamconventies te wijzigen op basis van netwerkframeworkvoorkeuren zoals Alamofire / Moya.

Swift's typesysteem staat bekend om zijn veiligheid. struct is een waardetype, geschikt voor het vertegenwoordigen van onveranderlijke gegevens; class is een referentietype, geschikt voor scenario's die gedeelde status of overerving vereisen. Door deze tool gegenereerde eigenschappen worden zo nauwkeurig mogelijk toegewezen aan Swift's String, Int, Double, Bool, [T], aangepaste typen, enz. Na generatie kunnen ontwikkelaars bepaalde velden wijzigen naar Optional (?) op basis van zakelijke behoeften, het Codable-protocol aan typen toevoegen, of een hele struct promoveren naar class om referentiesemantiek te verkrijgen.

Het behandelen van geneste objecten is een kernmogelijkheid van de tool. Wanneer JSON geneste objecten bevat, genereert de tool recursief onafhankelijke subtypen; wanneer Root bijvoorbeeld een address-object bevat, wordt een Address-type gegenereerd en verwijst het hoofdtype ernaar via var address: Address. Dit voorkomt dubbele type-definities en zorgt ervoor dat Xcode's autocomplete en typecontrole hiërarchische relaties correct kunnen volgen. De naamgevingsregel plaatst de eerste letter van de veldnaam in hoofdletters; elementen in een users-array worden bijvoorbeeld User genoemd.

Arraytype-inferentie volgt een "afleiden van het eerste element" strategie. Als array-elementen strings zijn, wordt [String] gegenereerd; als gehele getallen, [Int]; als zwevendekommagetallen, [Double]; als objecten, [aangepast type]. Lege arrays [] hebben geen monsters, dus wordt [Any] of een fallback-type gegenereerd; na generatie wordt aanbevolen ze te wijzigen naar concrete typen op basis van echte bedrijfslogica. Voor bijzonder grote of schaarse arrays wordt aanbevolen echte voorbeeld-elementen in de bron-JSON in te voegen om de inferentienauwkeurigheid te verbeteren.

Pure frontendverwerking is het centrale architectonische voordeel van deze tool. Alle JSON-parsing en Swift-codegeneratie worden uitgevoerd in browser-JavaScript (inclusief quicktype-core in een Web Worker), onafhankelijk van backendservices, en er worden geen gegevens naar een server verzonden. Dit ontwerp beschermt JSON-gegevens die gevoelige informatie kunnen bevatten en zorgt ervoor dat conversiesnelheid alleen wordt beperkt door lokale apparaatprestaties, zonder te wachten op netwerkreizen. Dit is vooral belangrijk bij het verwerken van JSON die API-sleutels of niet-gepubliceerde bedrijfsvelden bevat.

In tegenstelling tot sommige online tools die Codable / CodingKeys / Date decoderingsstrategieën forceren, houdt deze tool zich aan een principe van minimale uitvoer: teamleden hebben vaak verschillende voorkeuren voor protocollen, naamgeving en toegangscontrole, en deze tool laat protocolkeuzes en strategieën over aan ontwikkelaars voor verfijning per project. Deze workflow "genereer een halffabrikaat + postverwerking op projectniveau" is over het algemeen populairder bij ingenieurs in middelgrote en grote teams dan alles-in-één-klik oplossingen.

Toepassingsgevallen

  • iOS-ontwikkeling: converteer JSON geretourneerd door backend REST API's naar Swift-structs voor SwiftUI- of UIKit-netwerklaagmodellering en JSONDecoder-decodering
  • macOS-ontwikkeling: converteer app-configuratie-JSON naar Swift-typen voor typeveilige config-lezing in AppKit-projecten, waarbij typefouten worden vermeden
  • watchOS-ontwikkeling: converteer gezondheids- en fitnessgegevens-JSON naar Swift-modellen voor Apple Watch-apps, integrerend met SwiftUI en HealthKit
  • tvOS-ontwikkeling: converteer content-API JSON naar Swift-typen voor TV-app startpaginaweergave en focusnavigatie
  • SwiftUI MVVM-modellering: koppel API-gegevensmodellen direct als @Published eigenschappen aan ViewModels, waarmee UI-weergaven worden aangestuurd
  • Combine reactieve gegevensstromen: gebruik JSON-antwoordtypen als Publisher-uitvoertypen, werkend met JSONDecoder voor reactieve parsing
  • SwiftData / Core Data pre-modellering: genereer eerst Swift-structs, voeg vervolgens handmatig @Model of @NSManaged annotaties toe voor entiteitstoewijzing
  • Derde-partij SDK-integratie: converteer JSON-antwoordvoorbeelden van SDK-documentatie naar Swift-typen voor snelle integratie met login-, betalings-, push-, kaart- en andere SDK's
  • Unit-test voorbereiding: converteer interface-mock JSON naar Swift-typen voor XCTest-testgegevens en asserties, waardoor testonderhoudbaarheid wordt verbeterd
  • Code review: converteer API-antwoord-JSON naar Swift-typen om teamdiscussies in Code Review over veldnaamgeving en optionaliteit te vergemakkelijken
  • Flutter / React Native hybride ontwikkeling: bereid datamodellen voor voor het aanroepen van native Swift-modules, waardoor typeconversiefouten in de bridgelaag worden verminderd
  • Backend API-migratie: genereer Swift-clientmodellen vanuit REST API-documentatie of Postman-voorbeeld-JSON, waardoor snelle synchronisatie tijdens versie-updates mogelijk is
  • Onderwijs en training: demonstreer JSON-typesysteemtoewijzing in Swift/iOS-cursussen om studenten te helpen API-gegevensmodellering en typeveiligheid te begrijpen
  • Gezondheids- en fitness-apps: converteer JSON geretourneerd door HealthKit/Fitbit en vergelijkbare API's naar Swift-typen voor Apple Health-gegevensmodellering
  • Betalings- en financiële apps: converteer betalingsgateway API-antwoord-JSON naar Swift-modellen voor afstemming en uitzonderingsafhandeling
  • E-commerce bestelsystemen: converteer JSON voor bestellingen, producten, adressen, enz. naar Swift-structs voor gebruik met SwiftUI-lijsten en detailpagina's
  • Nieuws- en content-apps: converteer JSON-antwoorden van contentbeheersystemen naar Swift-typen voor TableView / SwiftUI-lijsten / detailpagina's
  • Vapor serverontwikkeling: converteer backend API request/response JSON naar Swift-structs voor server-side modeldefinities en Codable codering/decodering
  • MapKit en geografische gegevens: converteer JSON geretourneerd door kaart-API's naar Swift-structs voor locatiezoekopdrachten, routeplanning en geocoderingsresultaatmodellering

Hoe te gebruiken

  1. Plak JSON-inhoud in de editor links, of klik op de uploadknop om een .json / .txt-bestand te selecteren, of laad ingebouwde voorbeeldgegevens
  2. Na een debounce van 400ms roept de tool automatisch quicktype-core aan voor conversie; de rechterkant toont de gegenereerde Swift struct / class-code
  3. Als JSON onjuist is opgemaakt, klikt u op de knop "JSON herstellen" om veelvoorkomende syntaxisproblemen automatisch te herstellen (trailing komma's, enkele aanhalingstekens, ontbrekende aanhalingstekens, enz.)
  4. Controleer het gegenereerde resultaat; u kunt handmatig Codable / Equatable / Identifiable en andere protocollen toevoegen afhankelijk van uw projectbehoeften. Klik op "Kopiëren" om in Xcode te plakken, of op "Downloaden" om op te slaan als .swift-bestand

Functies

  • Pure browserconversie: JSON-parsing en Swift-codegeneratie gebeuren via quicktype-core in de browser; ruwe JSON noch gegenereerde code wordt naar een server verzonden
  • quicktype-core just-types modus: uitvoer is schone Swift struct/class eigenschapsdeclaraties zonder imports, Codable/CodingKeys annotaties of andere opmerkingen, klaar om aan te passen voor uw project
  • Automatische conversie met 400ms debounce: na plakken of bewerken van JSON worden Swift-typen bijna onmiddellijk gegenereerd zonder herhaaldelijk op een knop te klikken; conversie is volledig asynchroon en blokkeert de interface nooit
  • Achtergronduitvoering met Web Worker: quicktype-core draait in een Web Worker van de browser, waardoor de hoofdthread niet vastloopt en de editor niet traag wordt bij grote JSON-conversies
  • Slimme type-inferentie: wijst automatisch String, Int, Double, Bool, [T] en aangepaste typen toe; arrays worden afgeleid van het type van het eerste element — geen handmatige veldtypen schrijven
  • Automatische uitbreiding van geneste objecten: genereert recursief onafhankelijke Swift-typen voor elk genest object, benoemd met de eerste letter van de veldnaam in hoofdletters, waardoor dubbel type-definities worden vermeden
  • Automatische inferentie van arraytype: JSON-arrays worden automatisch geconverteerd naar [String] / [Int] / [Double] / [aangepast type]; lege arrays genereren standaard [Any]
  • JSON-fout herstel met één klik: wanneer veelvoorkomende opmaakfouten worden gevonden — trailing komma's, enkele aanhalingstekens, ontbrekende aanhalingstekens, opmerkingen, enz. — kunnen deze automatisch met één klik worden hersteld en conversie doorgaat
  • Kopieer met één klik + download .swift: kopieer gegenereerde Swift-code naar klembord of download als .swift-bestand om direct in uw Xcode-project te slepen
  • Voorbeeldgegevens + bestandsupload: ingebouwd Swift-stijl voorbeeld-JSON (met geneste address / company / tags); ondersteunt slepen-en-neerzetten of klikken om .json / .txt-bestanden te uploaden
  • Invoergeschiedenis localStorage: slaat automatisch uw recente invoer op; na vernieuwen of per ongeluk sluiten van de pagina kunt u snel doorgaan met bewerken zonder inhoudsverlies
  • Responsieve gesplitste editor: live weergave in links/rechts gesplitste lay-out, aangepast voor desktop en mobiel; vloeiende bediening zelfs op kleine schermen

Codevoorbeelden

Swift: Gegenereerde structs parsen met URLSession + JSONDecoder

swift

Meest gebruikelijk in iOS/macOS-projecten: voeg Codable toe aan door deze tool gegenereerde structs, haal dan asynchroon op met URLSession en decodeer met JSONDecoder.

import Foundation

// 1) Root-type gegenereerd door deze tool (met Codable-protocol toegevoegd)
struct User: Codable {
    let id: Int
    let name: String
    let email: String
    let isActive: Bool
    let tags: [String]
}

// 2) Asynchroon ophalen en decoderen URLSession
func fetchUser(id: Int) async throws -> User {
    let url = URL(string: "https://api.example.com/users/\(id)")!
    let (data, response) = try await URLSession.shared.data(from: url)
    guard
        let http = response as? HTTPURLResponse,
        (200..<300).contains(http.statusCode)
    else {
        throw URLError(.badServerResponse)
    }
    return try JSONDecoder().decode(User.self, from: data)
}

// 3) Gebruiksvoorbeeld (Swift 5.5+ async/await)
Task {
    do {
        let user = try await fetchUser(id: 42)
        print("User: \(user.name), tags: \(user.tags)")
    } catch {
        print("Failed to decode:", error)
    }
}

Swift: Gegenereerde typen deserialiseren met Alamofire responseDecodable

swift

Bij gebruik van Alamofire kunt u responseDecodable direct gebruiken om door deze tool gegenereerde structs automatisch te deserialiseren naar Swift-objecten.

import Foundation
import Alamofire

// Type gegenereerd door deze tool, direct bruikbaar na toevoegen van Codable
struct Product: Codable {
    let id: Int
    let title: String
    let price: Double
    let inStock: Bool
    let images: [String]
}

final class ProductService {
    private let session: Session

    init(session: Session = .default) {
        self.session = session
    }

    /// Alamofire 5 async/await stijl responseDecodable
    func loadProduct(id: Int) async throws -> Product {
        let url = "https://api.example.com/products/\(id)"
        return try await withCheckedThrowingContinuation { continuation in
            session.request(url)
                .validate(statusCode: 200..<300)
                .responseDecodable(of: Product.self) { response in
                    switch response.result {
                    case .success(let product):
                        continuation.resume(returning: product)
                    case .failure(let error):
                        continuation.resume(throwing: error)
                    }
                }
        }
    }
}

// Moya-stijl aanroepvoorbeeld
// provider.request(.product(id: 1)).map(Product.self)
// let product: Product = try await provider.request(.product(id: 1)).map(Product.self)

Swift: Reactief parsen met Combine + JSONDecoder

swift

In SwiftUI / Combine-projecten kunt u gegenereerde structs gebruiken samen met dataTaskPublisher / decode voor reactieve gegevensstromen.

import Foundation
import Combine

// Root-type gegenereerd door deze tool
struct Article: Codable, Identifiable {
    let id: Int
    let title: String
    let body: String
    let publishedAt: Date
}

final class ArticleRepository {
    private let session: URLSession
    private var cancellables = Set<AnyCancellable>()

    init(session: URLSession = .shared) {
        self.session = session
    }

    /// Gegevensstroom blootleggen met Combine
    func articlePublisher(id: Int) -> AnyPublisher<Article, Error> {
        let url = URL(string: "https://api.example.com/articles/\(id)")!
        let decoder = JSONDecoder()
        decoder.dateDecodingStrategy = .iso8601

        return session.dataTaskPublisher(for: url)
            .map(\.data)
            .decode(type: Article.self, decoder: decoder)
            .receive(on: DispatchQueue.main)
            .eraseToAnyPublisher()
    }

    /// Abonneren in SwiftUI ViewModel
    func bind(to viewModel: ArticleViewModel, articleId: Int) {
        articlePublisher(id: articleId)
            .sink(
                receiveCompletion: { completion in
                    if case .failure(let err) = completion {
                        viewModel.errorMessage = err.localizedDescription
                    }
                },
                receiveValue: { article in
                    viewModel.article = article
                }
            )
            .store(in: &cancellables)
    }
}

final class ArticleViewModel: ObservableObject {
    @Published var article: Article?
    @Published var errorMessage: String?
}

Best Practices

Veelgestelde vragen

Hoe converteer ik JSON naar een Swift struct?

Plak uw JSON-inhoud in het invoervak links. Na een debounce van 400ms roept de tool automatisch quicktype-core aan om het om te zetten naar Swift-code en toont het resultaat in realtime in het rechterpaneel. U kunt ook op de uploadknop klikken om een .json / .txt-bestand te selecteren, of op de voorbeeldknop klikken om ingebouwde gegevens te laden. Nadat de conversie is voltooid, kunt u het resultaat kopiëren of downloaden als .swift-bestand met één klik.

Bevat de gegenereerde Swift-code Codable?

Standaard niet. Deze tool gebruikt de just-types modus van quicktype-core, die pure struct/class eigenschapsdeclaraties produceert zonder Codable, Decodable of Encodable annotaties, en zonder import-instructies. Als u Codable nodig hebt, voegt u gewoon : Codable toe na generatie (bv. struct User: Codable {}), of schrijft u uw eigen parsing-logica met JSONDecoder.

Welke JSON-gegevensstructuren worden ondersteund?

Alle geldige JSON wordt ondersteund: basistypen (null, boolean, number, string), eendimensionale of multidimensionale arrays en geneste objecten van willekeurige diepte. Root-invoer kan een JSON-object of JSON-array zijn; de tool geeft prioriteit aan objecten en leidt arrays af van hun eerste element. Niet-ondersteunde invoer omvat JavaScript-speciale waarden (functies, Symbol, undefined) en niet-JSON-tekst.

Hoe worden geneste JSON-objecten behandeld?

De tool genereert recursief onafhankelijke Swift-typen voor elk genest object. Naamgeving is gebaseerd op een combinatie van de bovenliggende typenaam en veldnamen; als Root bijvoorbeeld een address-veld bevat, wordt een Address-subtype gegenereerd en verwijst het hoofdtype ernaar via var address: Address. Dit voorkomt dubbele type-definities en zorgt ervoor dat Xcode's autocomplete en typecontrole hiërarchische relaties correct kunnen volgen.

Worden arrayvelden Swift-arrays?

Ja. JSON-arrays worden automatisch geconverteerd naar Swift's [T]-vorm. Als array-elementen strings zijn, wordt [String] gegenereerd; als gehele getallen, [Int]; als zwevendekommagetallen, [Double]; als objecten, [aangepast type]. Lege arrays [] hebben geen voorbeeld-elementen, dus wordt standaard [Any] gegenereerd; na generatie wordt aanbevolen ze handmatig te wijzigen naar een concreet type zoals [String] of [Int].

Welk type wordt gegenereerd voor velden met null-waarde?

Null-waarden in JSON kunnen hun concrete type niet afleiden; de tool kan Any of een fallback-type genereren. Aanbevolen wordt om velden met null-waarde in de bron-JSON te vervangen door voorbeeldwaarden (bv. "field": "" leidt String af) of ze handmatig te wijzigen naar Optional op basis van bedrijfslogica (bv. var phone: String?), wat beter aansluit bij de veiligheidssemantiek van Swift's typesysteem.

Kan ik de naam van de gegenereerde struct aanpassen?

Ja. Klik op de knop voor typenaam (of instellingeninvoer) in de werkbalk om de naam van het root-type te wijzigen (standaard is Root of afgeleid van voorbeeldgegevens). Subtype-namen worden automatisch gegenereerd op basis van de rootnaam en veldnamen; de naamgevingsregel is de eerste letter van de veldnaam in hoofdletters, bv. users → User, tags → Tag.

Wat als mijn JSON onjuist is opgemaakt?

De tool detecteert automatisch de geldigheid van JSON; bij een fout wordt een specifieke foutmelding rechts weergegeven en wordt een knop "JSON herstellen" geboden. Door te klikken worden veelvoorkomende fouten automatisch hersteld: trailing komma's, enkele aanhalingstekens vervangen door dubbele, ontbrekende aanhalingstekens rond sleutels, verwijderen van opmerkingen, enz. Na succesvol herstel kunt u doorgaan met converteren zonder JSON handmatig te corrigeren.

Worden mijn gegevens naar een server verzonden? Zijn ze privé en veilig?

Draait volledig in uw browser. Alle JSON-parsing en Swift-codegeneratie gebeuren lokaal via browser-JavaScript (inclusief quicktype-core in een Web Worker); de JSON die u invoert en de gegenereerde Swift-code worden nooit naar een server verzonden, noch gelogd of in de cloud gecached. Gevoelige JSON met API-sleutels, tokens, gebruikersprivacyvelden of niet-gepubliceerde bedrijfsstructuren kan veilig worden gebruikt — de pagina sluiten wist alles.

Kan gegenereerde code direct in een Xcode-project worden gebruikt?

Ja. Gegenereerde code is standaard Swift-syntaxis en kan direct naar een Xcode .swift-bestand worden gekopieerd, of via de knop "Downloaden" als .swift-bestand worden opgeslagen en naar uw project gesleept. Aangezien de uitvoer pure type-declaraties zijn, wordt aanbevolen handmatig protocollen zoals Codable, Equatable, Identifiable toe te voegen indien nodig, of toegangscontrolemodificatoren aan te passen (public / internal / private).

Worden JSON-arrays als root-invoer ondersteund?

Ja. Wanneer de root-invoer een JSON-array is, gebruikt de tool het eerste element van de array als sjabloon om een elementtype te genereren en geeft de definitie van dat elementtype. [{"id":1,"name":"A"}] genereert bijvoorbeeld een struct genaamd Item (of een naam afgeleid van velden) waarvan de velden die van het eerste element zijn; het hoofdtype verwijst ernaar via een items: [Item] eigenschap, waardoor wordt voorkomen dat de array direct als root-type wordt behandeld.

Zal het converteren van grote JSON traagheid veroorzaken?

Er is geen expliciete groottelimiet, maar de browser wordt trager bij het parsen en weergeven van zeer grote JSON. Aanbevelingen: ① Converteer per keer JSON van slechts één bedrijfsmodule; ② Splits diepe geneste niveaus en verwerk ze afzonderlijk; ③ Voor JSON boven enkele MB kunt u de quicktype commandoregelversie gebruiken; ④ Dezelfde JSON opsplitsen in meerdere submodules en afzonderlijk converteren kan geheugengebruik aanzienlijk verminderen.

Kunnen JSON naar Swift en JSON naar TypeScript verwisselbaar worden gebruikt?

Beide converteren JSON naar typedefinities voor hun respectievelijke talen, maar hun focus verschilt: JSON naar Swift genereert struct/class eigenschapsdeclaraties voor native iOS/macOS-apps; JSON naar TypeScript genereert interface/type declaraties voor frontend-typecontrole. Als uw project zowel een iOS-client als een web-frontend heeft, wordt aanbevolen om Swift- en TS-versies te genereren vanuit dezelfde JSON om typeconsistentie aan beide zijden te waarborgen.

Hoe voeg ik het Codable-protocol toe aan gegenereerde code?

Deze tool genereert standaard pure typen zonder protocollen. Na generatie hoeft u alleen : Codable toe te voegen na de struct/class-declaratie, bv. struct User: Codable {}, en JSONDecoder kan het gebruiken. Als u standaard Codable wilt, kunt u quicktype-core forken en de Swift-renderer aanpassen, of Xcode's bulksgewijze vervanging gebruiken om het protocol aan alle typen toe te voegen na generatie.

Vereist het internet? Kan het op mobiel worden gebruikt?

Eerste bezoek vereist internet om de toolscripts en quicktype-core bronnen te laden; daarna kan het offline werken vanuit de browsercache (in een reeds bezochte browser). Mobiele browsers (iOS Safari, Android Chrome) werken ook normaal; de interface gebruikt een responsief gesplitst ontwerp dat automatisch overschakelt naar verticale stapeling in portretoriëntatie.

Kan ik na generatie een individueel type wijzigen zonder de andere te breken?

Ja. Na generatie is elk Swift-type een onafhankelijke struct/class; de tooluitvoer is platte tekst. U kunt afzonderlijk een enkel type kopiëren en in Xcode plakken, of Xcode's Rename-refactoring gebruiken om typen en velden bulksgewijs te wijzigen zonder andere typen te beïnvloeden. Als u de hele typegroep opnieuw moet genereren, vernieuwt u gewoon de pagina en plakt u de JSON opnieuw.

Wordt Swift enum-inferentie ondersteund?

quicktype's ondersteuning voor unions/enums vereist extra type-hints of GraphQL/JSON Schema-invoer. Enums afleiden alleen uit JSON-monsters is moeilijk, dus deze tool genereert standaard geen enums. Als u enums nodig hebt, kunt u de bijbehorende struct handmatig wijzigen naar een enum + Codable, of eerst een JSON naar Kotlin/TypeScript-tool gebruiken om enum-typen te verkrijgen en ze vervolgens handmatig naar Swift te migreren.

Probleemoplossing

Toont "Voer JSON-gegevens in" of rechterkant is leeg

Het invoervak links is leeg of bevat alleen witruimte. Plak geldige JSON-inhoud, of klik op "Voorbeeld" om een voorbeeld te laden, of op "Uploaden" om een .json / .txt-bestand te selecteren.

Toont "Unexpected token ... in JSON"

De JSON is onjuist opgemaakt. Veelvoorkomende oorzaken: ① trailing komma (bv. {"a":1,}); ② enkele aanhalingstekens gebruikt in plaats van dubbele; ③ JS-objectsyntaxis (bv. {key: value}) in plaats van JSON (bv. {"key": "value"}); ④ JavaScript-opmerkingen bevat. Klikken op de knop "JSON herstellen" kan enkele veelvoorkomende fouten automatisch herstellen.

Gegenereerde typen hebben geen Codable en kunnen niet direct met JSONDecoder worden gebruikt

Dit is verwacht gedrag. Deze tool gebruikt de just-types modus en genereert pure struct/class eigenschapsdeclaraties. Als u Codable nodig hebt, voegt u : Codable toe aan typen na generatie (bv. struct User: Codable {}), of schrijft u extension User: Codable {} voordat u JSONDecoder aanroept.

Lege array [] genereerde [Any]

Lege arrays hebben geen voorbeeld-elementen, dus de tool genereert het fallback-type [Any]. Aanbevolen wordt om ten minste één voorbeeld-element in de bron-JSON in te voegen (bv. [1, 2]), de voorbeeldwaarde na generatie te verwijderen en handmatig een concreet type op te geven; of direct na generatie te wijzigen naar een nauwkeuriger type zoals [String] / [User].

Veldtype met null-waarde is onzeker

JSON null kan geen concreet type afleiden; de tool kan Any of een fallback-type genereren. Aanbevolen wordt om null in de bron-JSON te vervangen door een representatieve voorbeeldwaarde (bv. "" of 0), en dat veld na generatie te wijzigen naar Optional (?) of een concreet type, bv. var phone: String?.

Namen van gegenereerde typen komen niet overeen met projectconventies

U kunt de naam van het root-type wijzigen in de werkbalk; subtype-namen worden automatisch gegenereerd op basis van rootnaam + veldnamen. Als u nog steeds ontevreden bent, gebruikt u Xcode's Rename-refactoring voor bulksgewijze wijziging na generatie (rechtsklik → Refactor → Rename); Xcode werkt alle verwijzingen synchroon bij.

Pagina wordt traag na conversie van grote JSON

De browser wordt trager bij het weergeven van zeer grote JSON en het genereren van veel typen. Aanbevolen wordt JSON op te splitsen in meerdere onafhankelijke bedrijfsmodules en ze afzonderlijk te converteren, of alleen sleutelobjecten te extraheren die modellering nodig hebben; voor JSON boven 10 MB wordt de quicktype commandoregelversie aanbevolen.

Xcode-compilatiefout: "Type 'X' does not conform to protocol 'Decodable'"

Betekent dat u Codable aan sommige velden hebt toegevoegd maar Optional / Date / Enum-typen niet correct hebt behandeld. Veelvoorkomende oplossingen: ① Wijzig alle velden die null kunnen zijn naar Optional<T>; ② Pas de datumstrategie aan met JSONDecoder().dateDecodingStrategy = .iso8601; ③ Pas CodingKeys aan om JSON-sleutels uit te lijnen met Swift-eigenschapnamen.

Veldnamen zijn snake_case maar Swift-conventie is camelCase

Deze tool behoudt standaard originele JSON-veldnamen, dus snake_case-velden worden zoals gegenereerd. Als u wilt uniformeren naar camelCase kunt u na generatie bulksgewijs hernoemen met Xcode's Rename, of veldnamen naar camelCase converteren in een aangepaste quicktype-renderer, voeg vervolgens CodingKeys-toewijzingen toe om correcte JSON-decodering te garanderen.

Gedownload .swift-bestand geeft fouten met Chinese sleutels bij openen in Xcode

Swift beveelt ASCII Engelse veldnamen aan als identifiers. Als bron-JSON Chinese sleutels bevat (bv. {"姓名": "Alice"}), zal de gegenereerde var 姓名: String compileerfouten veroorzaken in sommige oudere versies. Aanbevolen wordt sleutels te wijzigen naar Engels (bv. name) in de bron-JSON, wat meer in overeenstemming is met Swift-coderingsstandaarden.

Typen hebben alleen var, geen let / private besturingselementen

Deze tool genereert standaard public var eigenschappen voor eenvoudige naverwerking. Als u let of toegangscontrole wilt (bv. private(set)), kunt u na generatie bulksgewijs wijzigen met Xcode Refactor → Add Access Control, of var vervangen door let met sed / een tekstedithulpmiddel na generatie.

JSON bevat ISO 8601 datumstrings, gegenereerd Date-veld mislukt bij decodering

Deze tool wijst ISO 8601 strings standaard toe aan String; Swift converteert ze niet automatisch naar Date. U moet dateDecodingStrategy instellen op JSONDecoder, bv. JSONDecoder().dateDecodingStrategy = .iso8601. Als het datumformaat niet standaard is, moet u ook handmatig een DateFormatter of aangepaste parsing-logica implementeren.

Nesting is te diep, naamconflicten

De tool benoemt subtypen door "de eerste letter van de veldnaam in hoofdletters te plaatsen". Diep geneste JSON kan geneste objecten met dezelfde naam hebben, waardoor typeconflicten ontstaan. Oplossingen: ① Voeg zakelijke voorvoegsels toe aan velden in bron-JSON; ② Splits root-JSON in meerdere onafhankelijke modules en genereer afzonderlijk; ③ Gebruik Xcode's Rename om conflicterende typenamen na generatie bulksgewijs te wijzigen.

public struct gegenereerd maar project gebruikt module-isolatie

Deze tool genereert standaard internal struct zonder expliciete public-modificator. Als uw project is verdeeld in modules en cross-module toegang vereist, moet u in Xcode bulksgewijs struct vervangen door public struct, of na generatie uniform het public-sleutelwoord toevoegen met sed/awk-scripts.

Woordenlijst

struct
Een waardetype in Swift. Standaard geschikt voor het vertegenwoordigen van onveranderlijke gegevensmodellen; waarden worden gekopieerd bij toewijzing. Deze tool genereert standaard structs om JSON-objecten te vertegenwoordigen.
class
Een referentietype in Swift. Geschikt voor scenario's die gedeelde status, overerving of identiteit vereisen (===). Deze tool kan klassen genereren in bepaalde configuraties.
Optional (?)
Een typemodificator in Swift die aangeeft dat een waarde nil kan zijn, bv. var name: String?. Door deze tool gegenereerde velden zijn standaard niet-Optional; u kunt na generatie handmatig ? toevoegen op basis van of een JSON-veld afwezig kan zijn.
Array ([T])
Afkorting voor arraytypen in Swift. Deze tool converteert JSON-arrays naar [T], waarbij T wordt afgeleid van array-elementtypen, bv. [String], [Int] of [aangepast type].
Codable
Een combinatie van Decodable en Encodable-protocollen in Swift. Na implementatie van Codable kan JSONDecoder JSON-gegevens parseren naar type-instanties. Deze tool genereert standaard geen Codable; moet handmatig worden toegevoegd.
JSONDecoder
Een JSON-parser in het Foundation-framework. Gebruikt met het Codable-protocol om Data naar Swift-type-instanties te converteren. Nadat deze tool pure typen heeft gegenereerd, kunnen ontwikkelaars JSONDecoder gebruiken voor parsing.
URLSession
De netwerk-API in Apple's Foundation-framework. Veelgebruikt is URLSession.shared.data(from: url), die samen met JSONDecoder API-integratie voltooit.
Alamofire
De meest populaire derde-partij HTTP-netwerkbibliotheek in de Swift-gemeenschap. Gebouwd op URLSession, ondersteunt responseDecodable om direct naar Swift-typen te deserialiseren.
Moya
Een Swift-netwerkabstractielaag, vaak gecombineerd met Alamofire. Moya gecombineerd met Codable-typen kan boilerplatecode van API-aanroepen aanzienlijk vereenvoudigen.
Vapor
Het primaire server-side framework voor Swift, gebruikt voor het bouwen van web-apps op macOS / Linux. Swift-structs gegenereerd door deze tool kunnen ook worden gebruikt voor Vapor-routemodellen.
quicktype
Een open-source meertalige typegenerator. Deze tool voltooit JSON naar Swift-conversie via quicktype-core in een browser Web Worker.
Property
Een eigenschapsdeclaratie in een Swift-type. Deze tool wijst elke JSON-sleutel toe aan een Swift-eigenschap; "name": "Alice" wordt bijvoorbeeld toegewezen aan var name: String.
Type Inference
Het proces van het automatisch afleiden van Swift-typen op basis van de letterlijke vorm van JSON-waarden. Deze tool wijst toe op basis van null, boolean, number, string, array en object.
localStorage
Lokale sleutel-waarde opslag van de browser. Deze tool gebruikt localStorage om recente invoergeschiedenis op te slaan voor herstel na vernieuwen of per ongeluk sluiten van de pagina.
Web Worker
Een mechanisme voor achtergrondthreads van de browser. Deze tool laadt en voert quicktype-core uit via een Web Worker om te voorkomen dat grote JSON-conversies de hoofdthread blokkeren.
SwiftUI
Apple's declaratieve UI-framework. Door deze tool gegenereerde Swift-typen kunnen dienen als gegevensmodellen voor SwiftUI-weergaven, waarmee de interface wordt aangestuurd met @State / @ObservedObject.
Combine
Apple's reactief programmeerraamwerk. Gegenereerde Swift-typen gecombineerd met JSONDecoder kunnen reactieve gegevensstromen dataTaskPublisher bouwen.
SwiftData
Apple's gegevenspersistentieframework geïntroduceerd in 2023. Door deze tool gegenereerde typen kunnen dienen als basisklassen voor SwiftData-modellen; het toevoegen van @Model maakt ze beheerbaar door SwiftData.
Value Type / Reference Type
In Swift is struct een waardetype en class een referentietype. Deze tool genereert standaard struct, die wordt gekopieerd bij toewijzing; als referentiesemantiek nodig is, kunt u handmatig wijzigen naar class.
Field Naming
Deze tool behoudt standaard originele JSON-veldnamen. Als bron-JSON snake_case gebruikt en het project camelCase vereist, moet u na generatie handmatig hernoemen of de quicktype-renderer aanpassen.
ISO 8601 Date
Een veelgebruikt JSON-datumformaat, bv. 2026-07-14T10:00:00Z. Vereist JSONDecoder().dateDecodingStrategy = .iso8601 om correct te worden geparseerd naar Date-typen.

Snelle referentietabel voor JSON-type naar Swift-type toewijzing

De tool leidt automatisch bijbehorende Swift-typen af op basis van de vorm van JSON-waarden:

JSON-waarde voorbeeldDetectiemethodeGegenereerd Swift-typeOpmerkingen
nullvalue === nullAny? of concrete OptionalKan geen concreet type afleiden; aanbevolen na generatie handmatig te wijzigen naar Optional<T>
true / falsetypeof value === 'boolean'BoolDirect toegewezen aan Swift's Bool-type
42typeof value === 'number' && Number.isInteger(value)IntGehele getallen worden toegewezen aan Int (32/64 bits bepaald door platform)
3.14typeof value === 'number' && !Number.isInteger(value)DoubleZwevendekommagetallen worden toegewezen aan Double
"hello"typeof value === 'string'StringStrings worden toegewezen aan String
[] (lege array)Array.isArray(value) && value.length === 0[Any]Kan geen elementtype afleiden; aanbevolen voorbeeld toe te voegen of handmatig te wijzigen naar concreet type
["a", "b"]Array.isArray(value) && typeof value[0] === 'string'[String]Array van strings
[1, 2, 3]Array.isArray(value) && typeof value[0] === 'number'[Int]Array van gehele getallen
[1.5, 2.5]Array.isArray(value) && typeof value[0] === 'number' && !Number.isInteger(value[0])[Double]Array van floats
[{...}, {...}]Array.isArray(value) && typeof value[0] === 'object'[Item]Array van objecten, elementen zijn aangepaste typen, namen afgeleid van veldnamen
{...} (genest object)typeof value === 'object' && !Array.isArray(value)Onafhankelijke struct / classGenereert recursief onafhankelijke typen, benoemd met eerste letter van veld in hoofdletters

Common Use Cases for JSON to Swift in the Apple Ecosystem

Generated Swift types can be directly used in different scenarios on Apple platforms/third-party frameworks:

Use CaseCommon FrameworksRequired Protocols/ProcessingTypical Code Snippet
REST API parsingURLSession + JSONDecoderAdd Codable to types, maintain struct value semanticstry JSONDecoder().decode(User.self, from: data)
Simplified HTTP requestsAlamofireAdd Codable to types, pair with responseDecodablesession.request(url).responseDecodable(of: User.self)
Abstract network layerMoyaAdd Codable to types, Moya auto-deserializesprovider.request(.user(id: 1)).map(User.self)
Reactive data streamsCombine + JSONDecoderAdd Codable to types, combine with dataTaskPublisherURLSession.shared.dataTaskPublisher(for: url).decode(type: User.self, decoder: decoder)
SwiftUI list displaySwiftUI List + IdentifiableAdd Identifiable to types for automatic List forEachList(items) { Text($0.name) }
Server model definitionsVaporAdd Codable to types, Vapor auto Content serializationstruct User: Codable, Content { var id: Int; var name: String }
Local persistence modelsSwiftData/Core DataAdd @Model/@NSManaged to generated struct/class@Model class User { var id: Int; var name: String }
Cross-platform type sharingJSON to Swift + JSON to TypeScript combinedKeep Swift and TS field names consistent, pair TS types on TS endSwift: var name: String / TS: name: string

Privacy & Security

Deze JSON naar Swift-tool voert alle JSON-parsing en Swift-typegeneratie volledig uit in uw browser via JavaScript (quicktype-core / Web Worker). De JSON-gegevens die u invoert en de gegenereerde Swift-code worden nooit naar een server verzonden, noch gelogd, gecached of in de cloud opgeslagen. Gevoelige JSON met interne API-velden, API-sleutels, tokens, gebruikersprivacygegevens of niet-gepubliceerde bedrijfsstructuren kan veilig worden gebruikt; alle invoer- en uitvoerinhoud wordt automatisch uit het geheugen gewist wanneer u de pagina sluit of vernieuwt, zonder afhankelijk te zijn van netwerkservices van derden.

Authoritative References