(这是这个问题的后续:Using Decodable protocol with multiples keys)雨燕可解码可选关键
我有以下的银行代码:
let additionalInfo = try values.nestedContainer(keyedBy: UserInfoKeys.self, forKey: .age)
age = try additionalInfo.decodeIfPresent(Int.self, forKey: .realage)
我知道,如果我使用decodeIfPresent
和唐如果它是一个可选变量,它将不会正确处理它。
例如,以下JSON使用上面的代码解析它。
{
"firstname": "Test",
"lastname": "User",
"age": {"realage": 29}
}
而下面的JSON也适用。
{
"firstname": "Test",
"lastname": "User",
"age": {"notrealage": 30}
}
但是,以下不起作用。
{
"firstname": "Test",
"lastname": "User"
}
如何让所有3个示例都可以工作? nestedContainer
有没有类似于decodeIfPresent
?
我试图用1类/结构实现这一点。我有1个类/结构设计它的具体原因。有关详细信息,请参阅我的问题和答案[此处](https://stackoverflow.com/a/46737735/894067)。 –
啊,我明白了 - 我必须同意那里的答案,这个答案提出了一个与JSON结构相对应的“原始”模型,您可以用您希望的特质行为映射到您的更高层模型!我认为这比实现定制解码器更容易维护和理解,但祝你好运! –
就像我的数据在我的服务器文件中的结构一样,这使得使用自定义解码器更容易。而从我的理解和结构来看,以这种方式做起来要容易得多。也许有人能够给出符合我想要的答案。谢谢你的帮助。 –