어떻게 Codable
프로토콜을 사용하여 부분적으로 이중 직렬화 된 JSON 문자열을 디코딩 할 수 있습니까? 당신이 당신의 이중 인코딩 된 JSON를 해결할 수없는 경우`Codable` 프로토콜을 사용하여 부분적으로 직렬화 된 json 문자열을 부분적으로 디코딩 할 수 있습니까?
class Person : Codable {
var name : String?
var hobby : String?
}
class Family : Codable {
var person: String?
var person_: Person?
}
class PerfectFamily : Codable {
var person: Person?
}
let jsonString = "{\"person\":\"{\\\"name\\\":\\\"Mike\\\",\\\"hobby\\\":\\\"fishing\\\"}\"}"
do {
// I could do this.
let family = try JSONDecoder().decode(Family.self, from: Data(jsonString.utf8))
family.person_ = try JSONDecoder().decode(Person.self, from: Data(family.person!.utf8))
print(family)
// However I want to write more simply like this. Do you have some idea?
let perfectFamily = try JSONDecoder().decode(PerfectFamily.self, from: Data(jsonString.utf8)) // error
print(perfectFamily)
} catch {
print(error)
}
JSON 인코딩 방법을 보여줄 수 있습니까? 해독 방법을 해킹하는 대신 JSON을 수정해야합니다. –
아 ... 알았어요. 이 json 형식은 서버의 응답입니다. 나는 그것을 제어 할 수 없다. –