Outil Tool Kumar

JSON vers Swift

Générez des structures Swift conformes à Codable. Le convertisseur ajoute CodingKeys lorsque les noms de propriétés diffèrent des clés JSON. Une clé comme user-id est ainsi décodée dans userId.

Utiliser cet outil

  1. Collez une réponse représentative, en incluant des enregistrements dont les champs diffèrent.
  2. Vérifiez la sortie générée et modifiez le nom racine si nécessaire.
  3. Copiez ou téléchargez le code, puis vérifiez les types par rapport à votre contrat d'API.

Exemple détaillé

Cette sortie provient du convertisseur intégré. Les deux prix des articles donnent un champ à virgule flottante ; les valeurs null et chaîne du champ note donnent un champ nullable.

Entrée

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

Sortie

import Foundation

struct Root: Codable {
    let userId: Int
    let profile: Profile
    let items: [Item]

    enum CodingKeys: String, CodingKey {
        case userId = "user-id"
        case profile, items
    }
}

struct Profile: Codable {
    let city: String
    let createdAt: String

    enum CodingKeys: String, CodingKey {
        case city
        case createdAt = "created_at"
    }
}

struct Item: Codable {
    let price: Double
    let note: String?
}

Décoder avec JSONDecoder

Utilisez JSONDecoder avec la structure Root générée. Codable permet aussi d'encoder ce même modèle avec JSONEncoder.

Conservez la stratégie de clés par défaut pour cette sortie. Ses CodingKeys contiennent déjà les noms transmis dans le JSON, notamment created_at.

let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)

Options et cas limites

  • Les entiers donnent le type Int, les valeurs décimales donnent Double et les entiers qui dépassent la plage des entiers signés sur 64 bits donnent Decimal. Vérifiez les limites de la plateforme cible et la précision décimale.
  • Les valeurs null et les champs absents produisent des propriétés optionnelles. Les structures dont les valeurs sont uniquement null ou de types hétérogènes utilisent au besoin le type utilitaire JSONValue généré.
  • JSONValue stocke les nombres sous forme de Double. Utilisez donc des types explicites pour les montants monétaires exacts ou les très grands identifiants.
  • Les chaînes de date restent de type String. Si vous passez un champ au type Date, configurez JSONDecoder.dateDecodingStrategy selon le format de l'API.

Privé par défaut

Votre document reste dans ce navigateur. Tool Kumar analyse, convertit et crée les téléchargements sur votre appareil, sans compte ni étape d'envoi au serveur.

JSON vers Swift : questions fréquentes

Le générateur produit-il des classes ou des structures ?
Des structures conformes à Codable, avec des propriétés let et des types de modèles imbriqués. Il importe Foundation.
Quand CodingKeys est-il ajouté ?
Lorsqu'un nom de propriété change, le générateur produit une énumération CodingKeys qui associe les identifiants Swift aux clés JSON d'origine.
Comment null est-il traité ?
Les valeurs null observées et les champs absents produisent des propriétés optionnelles. Les valeurs inconnues ou de types hétérogènes utilisent une énumération JSONValue conforme à Codable, ajoutée uniquement si elle est référencée.
Puis-je utiliser JSONDecoder directement ?
Oui. Copiez les structures générées dans votre projet et décodez Root.self à partir de Data. Vérifiez d'abord les champs optionnels et les types des dates.

Outils associés

JSON vers Dart, JSON vers des data classes Kotlin et Générateur JSON Schema.