JSON Wars:可编码⚔️Unbox
最初发表在 Swift Post上 。
Codable让所有人都感到兴奋,因为我们都喜欢解析JSON,并且很高兴将此工具作为标准库的一部分。 现在是时候测试它是否值得成为我们最喜欢的一个了。
让我们看看Codable在恶劣条件下的性能。 我们将使用Codable解析以下JSON,然后将其与流行的Unbox / Wrap实现进行比较。
{
“placeName”: “İstanbul, Turkey”,
“lat”: 41.0049823,
“lon”: 28.7319958,
“dateAdded”: “2018-05-25”,
“info”: “İstanbul is a very historical city.”
}
我们希望我们的数据模型如下所示。
struct Place: Codable {
let name: String
let coordinate: Coordinate
let dateAdded: Date
let info: String?
}
struct Coordinate {
let latitude: Decimal
let longitude: Decimal
}
挑战 :
-
placeName
和name
不匹配。 我们需要调整编码键。 - 两个单独的键
lat
和lon
成为坐标对象。 需要自定义解码。 - 我们需要对
dateAdded
字段使用YYYY-mm-dd
日期格式。 - 如果缺少
name
,coordinate
和dateAdded
字段,但info
字段为可选字段,则需要抛出错误。
使用可编码实现
在大多数情况下,它无需任何自定义即可工作。 尽管由于键的类型强而使高级用法有时会很复杂,但它很容易学习。 Codable就像瑞士军刀一样,所以我想不出您无法处理的任何情况。
我开始写这篇文章时认为,与高级使用的Codable相比,Unbox更加简单易读,但是示例代码表明并非如此。 现在可能是时候摆脱所有第三方JSON解析框架,并使Codable和平相处了。
很好玩,苹果。