【发布时间】:2025-12-05 09:50:01
【问题描述】:
我有一个(烦人的)情况,我的后端返回一个像这样的对象:
{
"user": {
"name": [
"John"
],
"familyName": [
"Johnson"
]
}
}
其中每个属性都是一个数组,其中包含一个字符串作为其第一个元素。在我的数据模型struct 中,我可以将每个属性声明为一个数组,但这真的很难看。我希望我的模型是这样的:
struct User: Codable {
var user: String
var familyName: String
}
但这当然会使编码/解码失败,因为类型不匹配。到目前为止,我已经使用了ObjectMapper 库,它提供了一个Map 对象和currentValue 属性,我可以将我的属性声明为String 类型,并在我的模型中init 方法通过这个函数分配每个值:
extension Map {
public func firstFromArray<T>(key: String) -> T? {
if let array = self[key].currentValue as? [T] {
return array.first
}
return self[key].currentValue as? T
}
}
但是现在我正在转换为Codable 方法,我不知道如何进行这种映射。有什么想法吗?
【问题讨论】:
标签: ios json swift codable decodable