如何使一个具有`variable:[String:Codable]`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来使结构可编码。

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", "5", "6"]), "test": AnyCodable(["1", "2", "3"])])

最新更新