【发布时间】:2017-11-19 12:55:49
【问题描述】:
注意:我已经看过这个问题 -> How do I use custom keys with Swift 4's Decodable protocol? 但它没有解释如何编码/解码枚举
这是我想要的结构:
struct MyStruct: Decodable {
let count: PostType
}
enum PostType: Decodable {
case fast(value: Int, value2: Int)
case slow(string: String, string2: String)
}
现在我知道我希望我的结构看起来如何,问题是:
- 我不知道
init函数在PostType枚举中应该是什么样子。
我使用下面的代码来帮助我快速构建 JSON。
let jsonData = """
{
"count": {
"fast" :
{
"value": 4,
"value2": 5
}
}
}
""".data(using: .utf8)!
// Decoding
do {
let decoder = JSONDecoder()
let response = try decoder.decode(MyStruct.self, from: jsonData)
print(response)
} catch {
print(error)
}
谁能帮我解决这个问题?
Edit1我的 JSON 看起来像这样
{
"count": {
"fast" :
{
"value": 4,
"value2": 5
}
}
}
init 在PostType enum 中应该是什么样子?
【问题讨论】:
-
这不是重复的。这个问题是解码一个结构。这是用元组解码枚举。我知道如何解码结构,但使用枚举就大不一样了。
-
您期望的关联枚举值的 JSON 表示形式是什么?
-
@vadian 就是这样。我知道我希望我的结构看起来像
MyStruct,但我不知道 JSON 应该是什么样子。如果有人能告诉我,那么我可以让 JSON 成为那个值。 -
JSON 有一组有限的类型:
Array、Dictionary作为集合类型,String、Number、Bool和null作为值类型。您可以将枚举表示为 String / Int 的数组,或者将每个值表示为键 / 值对或以大小写为键的字典。 -
@vadian 我已经编辑了我的问题并包含了我的 JSON 的样子。我如何让 PostType 枚举来解析这个?