У меня есть ответ JSON, и я преобразовал его в Codable классы с https://app.quicktype.io
Я получил класс со всеми структурами, и есть один особый случай,
enum Code: String, Codable {
case adlt = "ADLT"
case chld = "CHLD"
case empty = ""
case inft = "INFT"
case rq = "RQ"
case usd = "USD"
}
иэтот enum-код входит в 'passengerTypeQuantity (JSON дает ниже)
{
"passengerTypeQuantity": {
"passengerType": {
"code": "ADLT"
},
"quantity": 2,
"hasStrecher": false
},
"pricingInfo": {
"baseFare": {
"amount": {
"currency": {
"code": "USD"
},
"value": 60
}
},
"fees": {
"totalAmount": {
"currency": {
"code": "USD"
},
"value": 0
}
},
"totalFare": {
"amount": {
"accountingSign": "ADC",
"currency": {
"code": "USD"
},
"value": 87
}
},
"fareConstruction": "",
"passengerTypeCode": "ADLT",
"surcharges": {
"totalAmount": {
"currency": {
"code": "USD"
},
"value": 24
},
"surchargeList": [
{
"surchargeAmount": {
"currency": {
"code": "USD"
},
"value": 24
},
"surchargeCode": "YQ",
"surchargeType": "S",
"paid": false
}
]
},
"taxes": {
"taxList": [
{
"paid": false,
"taxAmount": {
"currency": {
"code": "USD"
},
"value": 1
},
"taxCode": "AF",
"taxType": "T"
},
{
"paid": false,
"taxAmount": {
"currency": {
"code": "USD"
},
"value": 2
},
"taxCode": "M5",
"taxType": "T"
}
],
"totalAmount": {
"currency": {
"code": "USD"
},
"value": 3
}
},
"discountApplied": false,
"fareBaggageAllowance": 0
},
"fareInfoList": [
{
"cabinClassCode": "Y",
"fareReferenceCode": "x",
"flightSegmentSequence": 1,
"fareReferenceName": "x",
"fareGroupName": "x",
"resBookDesigCode": "S",
"fareReferenceID": "x"
}
]
}
Обычно через Codable я могу получить доступ к другим частям с помощью
root.availabilityResultList.first?.availabilityRouteList.first?.availabilityByDateList.first?.originDestinationOptionList.first?.fareComponentGroupList.first?.fareComponentList?.first?.passengerFareInfoList.first?.passengerTypeQuantity.passengerType
Это структура PassengerFareInfoList.
struct PassengerFareInfoList: Codable {
let passengerTypeQuantity: PassengerTypeQuantity
let pricingInfo: PricingInfo
let fareInfoList: [FareInfoList]
}
Это структура passengerTypeQuantity.
struct PassengerTypeQuantity: Codable {
let passengerType: Currency
let quantity: Int
let hasStrecher: Bool
}
Это структура валюты
struct Currency: Codable {
let code: Code
}
и из кода происходит Enum (упомянутый выше)
enum Code: String, Codable {
case adlt = "ADLT"
case chld = "CHLD"
case empty = ""
case inft = "INFT"
case rq = "RQ"
case usd = "USD"
}
Вопрос: Как я могу проверить случай, затем вернуться к информации о ценах и получить цену для случая ADLT?а затем для случая CHLD ... и т. д.