我只是好奇如何将带有String
键和Encodable
值的字典编码为 JSON。
例如:
let dict: [String: Encodable] = [
"Int": 1,
"Double": 3.14,
"Bool": false,
"String": "test"
]
这里的键dict
都是 type String
,但是值的类型不同。
但是,JSON 中允许所有这些类型。
我想知道是否有一种方法可以JSONEncoder
在 Swift 4 中使用将其编码dict
为 JSON Data
。
我确实知道还有其他方法可以不使用JSONEncoder
来实现这一点,但我只是想知道是否JSONEncoder
能够管理这一点。
Dictionary
确实有一个扩展func encode(to encoder: Encoder) throws
名,但这仅适用于约束Key: Encodable, Key: Hashable, Value: Encodable
,而对于我们的dict
,它需要约束Key: Encodable, Key: Hashable, Value == Encodable
。
有struct
这个就足够了JSONEncoder
,
struct Test: Encodable {
let int = 1
let double = 3.14
let bool = false
let string = "test"
}
但是,我很想知道是否可以在不指定具体类型而只指定Encodable
协议的情况下完成它。