使用唯一的参数
从此结构创建JSON的最佳方式是什么 struct SessionStorage: Encodable {
var value: String
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
/// the magic
}
enum CodingKeys: String, CodingKey {
case params
}
}
进入这个JSON字符串?
{"params": {"value": "{value}"}}
我不想创建嵌套结构。
答案 0 :(得分:1)
两种方式:
将字典编码为[String: SessionStorage]
struct SessionStorage: Encodable {
var value: String
}
let session = SessionStorage(value: "Foo")
do {
let jsonData = try JSONEncoder().encode(["params" : session])
print(String(data: jsonData, encoding: .utf8)!)
} catch { print(error) }
使用信封结构
struct Envelope : Encodable {
let params : SessionStorage
}
struct SessionStorage: Encodable {
var value: String
}
let envelope = Envelope(params : SessionStorage(value: "Foo"))
do {
let jsonData = try JSONEncoder().encode(envelope)
print(String(data: jsonData, encoding: .utf8)!)
} catch { print(error) }
恕我直言,这不是一个优雅的问题,而是一个效率问题。优雅在于不指定encode(to
和CodingKeys