加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift4 – Swift 4可解码 – 将JSON对象解码为`Data`

发布时间:2020-12-14 04:55:00 所属栏目:百科 来源:网络整理
导读:我有以下数据结构: { "type": "foo" "data": { /* foo object */ }} 这是我的解码它的类: final public class UntypedObject: Decodable { public var data: Data enum UntypedObjectKeys: CodingKey { case data } required public init(from decoder: De
我有以下数据结构:

{
    "type": "foo"
    "data": { /* foo object */ }
}

这是我的解码它的类:

final public class UntypedObject: Decodable {

    public var data: Data

    enum UntypedObjectKeys: CodingKey {
        case data
    }

    required public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: UntypedObjectKeys.self)

        self.data = try values.decode(Data.self,forKey: .data)
    }
}

我正在获取这样的对象数组,这就是我解码它的方式:

let decoder = JSONDecoder()
let objectList = try decoder.decode([UntypedObject].self,from: data)

但是我在控制台中收到此错误:

typeMismatch(Swift.Array,Swift.DecodingError.Context(codingPath: [Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: “Index 0”,intValue: Optional(0)),Playground_Sources.UntypedObject.UntypedObjectKeys.data],debugDescription: “Expected to decode Array but found a dictionary instead.”,underlyingError: nil))

所以问题是可以将正确的JSON对象解码为Data类型的属性,如果是这样的话 – 我该如何实现呢?

解决方法

当你解码它时,你能检查它是否是一个数组?

那么上面的代码如果是“true”则工作,否则解码为字典

查看我发现有用的解码文章:

https://medium.com/swiftly-swift/swift-4-decodable-beyond-the-basics-990cc48b7375

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读