Я пытаюсь получить конкретное вспомогательное значение из JSON, который я написал. JSON выглядит так:
{
"name":"Tour of Honor Bonus Listing",
"version":"18.1.3",
"bonuses": [
{
"bonusCode":"AZ1",
"category":"ToH",
"name":"Anthem Tour of Honor Memorial",
"value":1,
"city":"Anthem",
"state":"AZ",
"flavor":"Flavor Text Goes Here",
"imageData":"Base64 Text Goes Here"
},
{
"bonusCode":"AZ2",
"category":"ToH",
"name":"Benson Tour of Honor Memorial",
"value":1,
"city":"Benson",
"state":"AZ",
"flavor":"Flavor Text Goes Here",
"imageData":"Base64 Text Goes Here"
}
]
}
В моем файле BonusTableViewController.swift в разделе viewDidLoad
я использую следующее:
let loadedBonuses = loadJson(filename: "BonusData")
print(loadedBonuses as Any)
И эта loadJson
функция выглядит так:
func loadJson(filename fileName: String) -> [Bonuses]? {
if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let decoder = JSONDecoder()
let jsonData = try decoder.decode(JSONData.self, from: data)
print("loadJson loaded JSON")
return jsonData.bonuses
} catch {
print("error:\(error)")
}
}
return nil
}
Файл JSON называется BonusData.json и находится в комплекте приложения.
Приведенный выше код работает как есть, и в консоли я получаю полный вывод массива бонусов из JSON. Однако я хочу, чтобы он печатал только значение BonusCode. Я пытался print(loadedBonuses.bonusCode as Any)
, но я получаю сообщение об ошибке,
Значение типа '[BonusTableViewController.Bonuses]?' не имеет члена
'Бонусный'
Я пробовал другие варианты, но все они дают мне ту же ошибку. Если это помогает, структура выглядит следующим образом:
// Bonus Data Structs
struct JSONData: Decodable {
let name: String
let version: String
let bonuses: [Bonuses]
}
struct Bonuses: Decodable {
let bonusCode: String
let category: String
let name: String
let value: Int
let city: String
let state: String
let flavor: String
let imageData: String
}
Что я делаю не так?