Codable
プロトコルを使用して部分的にシリアライズされた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を修正する必要があります。 –
ああ...そうだ。このjson形式はサーバーからの応答です。私はそれを制御することはできません。 –