Hi!
I would like to Decode a json with swift.
The structure of the json is:
var json = """"
{
"Usage Time Data Log": [
{
"Resettable Counter": "29"
},
{
"Non-Resettable Counter": "29"
}
]
}
"""
Currently I've created the following structures
struct UsageTimeDataLog: Decodable{
let UsageTimeData: [Item]
private enum CodingKeys: String, CodingKey{
case UsageTimeData = "Usage Time Data Log"
}
}
struct ResettableCounter : Decodable{
let Resettable: String
}
struct NonResettableCounter : Decodable{
let NonResettable: String
}
enum Item: Decodable{
case resettable(ResettableCounter)
case nonResettable(NonResettableCounter)
enum CodingKeys: String, CodingKey {
case resettable = "Resettable Counter"
case nonResettable = "Non-Resettable Counter"
}
}
extension Item{
init(from decoder: any Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
if (try? container.decodeIfPresent(Bool.self, forKey: .resettable)) ?? false {
self = .resettable(try! ResettableCounter(from: decoder) )
}else if (try? container.decodeIfPresent(Bool.self, forKey: .nonResettable)) ?? false {
self = .nonResettable(try! NonResettableCounter(from: decoder))
}else {
fatalError()
}
}
}
But I can't get it to work. Where' my misconception?
Mabe someone could give a hint!?
regards