I am just curious how can I encode a dictionary with String
key and Encodable
value into JSON.
For example:
let dict: [String: Encodable] = [
"Int": 1,
"Double": 3.14,
"Bool": false,
"String": "test"
]
The keys in this dict
are all of type String
, but the type of the values vary.
However, all of these types are allowed in JSON.
I am wondering if there is a way to use JSONEncoder
in Swift 4 to encode this dict
into JSON Data
.
I do understand there are other ways without using JSONEncoder
to achieve this, but I am just wondering if JSONEncoder
is capable of managing this.
The Dictionary
do have a func encode(to encoder: Encoder) throws
in an extension, but that only applies for constraint Key: Encodable, Key: Hashable, Value: Encodable
, whereas for our dict
, it needs constraint Key: Encodable, Key: Hashable, Value == Encodable
.
Having a struct
for this will be sufficient to use JSONEncoder
,
struct Test: Encodable {
let int = 1
let double = 3.14
let bool = false
let string = "test"
}
However, I am interested to know if the it can be done without specifying the concrete type but just the Encodable
protocol.