Как пользоваться
- Вставьте реалистичный пример JSON; несколько элементов в массиве помогают найти необязательные ключи.
- Выберите неизменяемые свойства let или var.
- Скопируйте код в файл .swift и разбирайте так:
try JSONDecoder().decode(Root.self, from: data).
Как это работает
Пример разбирается в «форму»: каждый ключ со всеми встреченными там типами. Все объекты одного массива становятся одной структурой, поэтому ключ, который есть не везде, становится опциональным. Codable разбирает отсутствующий опциональный ключ как nil.
- Имена свойств — camelCase: order_id → orderId; ключевое слово Swift, например default, пишется в обратных кавычках.
- Имена структур берутся из ключей: items хранит [Item], customer становится Customer.
- Массив на верхнем уровне даёт typealias, например typealias Root = [RootItem].
Пример
{"line_items":[{"sku":"A","note":null,"qty":1},{"sku":"B","note":"x"}]} с var даёт:
import Foundation
struct Root: Codable {
var lineItems: [LineItem]
enum CodingKeys: String, CodingKey {
case lineItems = "line_items"
}
}
struct LineItem: Codable {
var sku: String
var note: String?
var qty: Int?
}
Советы
- Даты приходят строками: поменяйте тип на Date и задайте decoder.dateDecodingStrategy (например, .iso8601), если хотите их разбирать.
- Соответствие Identifiable или Hashable для SwiftUI добавьте сами.
- Модели того же JSON для Kotlin или TypeScript делают соседние генераторы.