【发布时间】:2021-07-05 18:41:32
【问题描述】:
我有一个非常简单的 JSON 文件,看起来像这样,但我怎样才能将它写成 Swift 结构呢?
这样对吗?
struct SomeName: Codable {
var action = [String: [String: String]]()
var trigger = [String: [String: String]]()
}
【问题讨论】:
我有一个非常简单的 JSON 文件,看起来像这样,但我怎样才能将它写成 Swift 结构呢?
这样对吗?
struct SomeName: Codable {
var action = [String: [String: String]]()
var trigger = [String: [String: String]]()
}
【问题讨论】:
你可以这样做。
首先,我将 JSON 转换为数据,以便可以对其进行解码。
其次,由于 JSON 中有两个属性,动作和触发器,我创建了两个与属性匹配的嵌套结构。在第二个 struct Trigger 中,我们需要使用自定义编码键,因为 Swift 按照惯例使用驼峰式,并且您不能在变量名中使用 -。
import Foundation
let data = """
[
{
"action": {
"type": "block"
},
"trigger": {
"url-filter": "apple.com"
}
}
]
""".data(using: .utf8)!
struct SomeName: Codable {
struct Action: Codable {
let type: String
}
struct Trigger: Codable {
let urlFilter: String
enum CodingKeys: String, CodingKey {
case urlFilter = "url-filter"
}
}
let action: Action
let trigger: Trigger
}
do {
let result = try JSONDecoder().decode([SomeName].self, from: data)
} catch {
print(error)
}
将上面的代码放到 Playground 中,应该可以工作了。
【讨论】: