привет читающим! К сожалению не всегда всё бывает гладко. Так получилось, что хотелось бы распарсить с новым протоколом Codable JSON формат. То, что нужно распарсить, оставляет желать лучшего… Вообщем вот оно…
let stringJSON = """
{
"fields":[[
{
"first_name":"Jim"
},{
"last_name":"Carry"
}
]]
}
"""
я как бы пытался сделать так:
struct NamenList : Decodable {
let fields: [[Fields]]
}
struct Fields: Decodable {
var firstName: String
var lastName: String
enum CodingKeys: String, CodingKey {
case fields
}
enum FirstNameKeys: String, CodingKey {
case firstName = "first_name"
}
enum LastNameKeys: String, CodingKey {
case lastName = "last_name"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let fieldsFirstName = try values.nestedContainer(keyedBy: FirstNameKeys.self, forKey: .fields)
firstName = try fieldsFirstName.decode(String.self, forKey: .firstName)
let fieldsLastName = try values.nestedContainer(keyedBy: LastNameKeys.self, forKey: .fields)
lastName = try fieldsLastName.decode(String.self, forKey: .lastName)
}
}
let data = jsonString.data(using: .utf8)!
do {
let blogs = try JSONDecoder().decode(NamenList.self, from: data)
dump (blogs)
} catch let jsonErr {
print("Error serializing json", jsonErr)
}