Инструмент Tool Kumar
JSON в Swift: модели Codable
Генерируйте структуры Swift, реализующие протокол Codable. Конвертер добавляет CodingKeys, когда имена свойств отличаются от ключей JSON, поэтому ключ вроде user-id всё равно декодируется в userId.
Как пользоваться инструментом
- Вставьте типичный ответ, включая записи с разным набором полей.
- Проверьте сгенерированный код и при необходимости измените имя корня.
- Скопируйте или скачайте код, затем сверьте типы с контрактом вашего API.
Пример с разбором
Этот результат создан встроенным конвертером. По двум ценам товаров выводится тип поля с плавающей точкой. Значения null и строка в поле note дают тип, допускающий null.
Ввод
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Результат
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?
}
Декодирование с JSONDecoder
Используйте JSONDecoder со сгенерированной структурой Root. Codable также позволяет кодировать ту же модель с помощью JSONEncoder.
Для этого кода оставьте стратегию ключей по умолчанию: его CodingKeys уже содержат исходные имена ключей, включая created_at.
let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)Параметры и особые случаи
- Для целых чисел выводится Int, для дробных — Double, а для целых за пределами диапазона 64-битных целых со знаком — Decimal. Проверьте ограничения целевой платформы и точность десятичных значений.
- Значения null или отсутствующие поля становятся опциональными свойствами. Для полей, содержащих только null или значения разных типов, при необходимости используется сгенерированный вспомогательный тип JSONValue.
- JSONValue хранит числа как Double, поэтому для точных денежных сумм или очень больших ID используйте явные типы.
- Строки с датами остаются String. Если вы замените тип поля на Date, настройте JSONDecoder.dateDecodingStrategy под формат вашего API.
Конфиденциальность по умолчанию
Документ остаётся в этом браузере. Tool Kumar разбирает и конвертирует данные, создаёт файлы для скачивания на вашем устройстве, без регистрации и отправки на сервер.
Вопросы об инструменте «JSON в Swift: модели Codable»
- Он генерирует классы или структуры?
- Структуры, реализующие протокол Codable, со свойствами let и вложенными типами моделей. Код импортирует Foundation.
- Когда добавляются CodingKeys?
- Если имя свойства меняется, генерируется перечисление CodingKeys, которое сопоставляет идентификаторы Swift с исходными ключами JSON.
- Как обрабатывается null?
- Встреченные в примере null и отсутствующие поля дают опциональные свойства. Для неизвестных или смешанных значений используется перечисление JSONValue с Codable, которое добавляется, только если на него есть ссылки.
- Можно ли сразу использовать JSONDecoder?
- Да. Скопируйте сгенерированные структуры в проект и декодируйте Root.self из Data. Сначала проверьте опциональные поля и типы дат.
Похожие инструменты
JSON в Dart, JSON в Kotlin: data-классы и Генератор JSON Schema.