【发布时间】:2022-01-09 18:23:43
【问题描述】:
我想编码一个可能是
{"hw1":{"get_trouble":true},"seq":2,"session_id":1}
或
{"hw2":{"get_trouble":true},"seq":3,"session_id":2}
编码类如下所示
class Request: Codable {
let sessionId, seq:Int
let content:[String:Content]
enum CodingKeys:String, CodingKey{
case sessionId = "session_id"
case seq
case content
}
init(sessionId:Int, seq:Int, content:[String:Content]) {
self.sessionId = sessionId
self.seq = seq
self.content = content
}
}
class Content:Codable{
let getTrouble = true
enum CodingKeys:String, CodingKey {
case getTrouble = "get_trouble"
}
}
如何对请求进行编码以便获得所需的结果?目前,如果我这样做
let request = Request(sessionId: session, seq: seq, content: [type:content])
let jsonData = try! encoder.encode(request)
我明白了
{"content":{"hw1":{"get_trouble":true}},"seq":2,"session_id":1}
而且我不希望 JSON 中有“内容”。已查看
Swift Codable: encode structure with dynamic keys
并且无法弄清楚如何在我的用例中应用
【问题讨论】:
-
你也需要解码吗?
-
是的,类似的请求需要被解码。可能是 {"seq":1,"hw1":{"get_trouble":{"troubles":["alarm"],"error_code":0}}} {"seq":1,"hw2":{ "get_trouble":{"trouble":["bus"],"error_code":0}}}
-
您评论中的 json 看起来甚至与您代码中的类型不一样。
-
抱歉,我无法正确格式化。评论中的 json 是我稍后需要解码的响应。目前我正在尝试对需要发送到服务器的请求进行编码,并且我将采用相同的方法来解码响应
标签: swift encoding codable encodable