微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用`variable:[String:Codable]`可编码的结构?

如何解决如何使用`variable:[String:Codable]`可编码的结构?

我有一个像下面这样的结构

struct Wrapper {

  var value: [String: Any]
  // type "Any" Could be String,Int or [String]. 
  // i.g. ["a": 1,"b": ["ccc"]]
  // and the keys of this dictionary are not determined 
}

我挣扎了好久?。 任何人都知道如何解决它?

解决方法

您可以使用一些库,例如 AnyCodable

然后您可以通过使用 AnyCodable 类而不是 Any 来使您的结构 Codable。

struct Wrapper: Codable {
    var value: [String: AnyCodable]
}

示例

let arrayWrapper: [String: Any] =
["value" :
       [
         "test" : ["1","2","3"],"parse" : ["4","5","6"]]
        ]

let jsonData = try! JSONSerialization.data(withJSONObject: arrayWrapper,options: .prettyPrinted)

do {
   let decoder = JSONDecoder()
   let result = try decoder.decode(Wrapper.self,from: jsonData)
   print("result:",result)
} catch let error {
   print("error:",error)
}

输出

result: Wrapper(value: ["parse": AnyCodable(["4","6"]),"test": AnyCodable(["1","3"])])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。