我希望为以下JSON创建可编码的结构请求
{"Symbols":[{"Name":"AAS1"},{"Name":"ASSD"}],"NoOfSymbols":2,"msgtype":15}我试着创建,但是获取error.Type 'SymbolName‘不符合’Encodable‘协议。
struct RequestData:Encodable{
let Symbols:[SymbolName]
let NoOfSymbols:Int
let msgtype: Int
}
struct SymbolName:Encodable{
let Name : [String:Any]
}发布于 2022-09-14 11:36:20
使用https://app.quicktype.io/,您可以得到:
struct RequestData: Codable {
let symbols: [Symbol]
let noOfSymbols, msgtype: Int
enum CodingKeys: String, CodingKey {
case symbols = "Symbols"
case noOfSymbols = "NoOfSymbols"
case msgtype
}
}
struct Symbol: Codable {
let name: String
enum CodingKeys: String, CodingKey {
case name = "Name"
}
}你可以这样解码:
let response = try JSONDecoder().decode(RequestData.self, from: data)
print("\n---> response: \(response)")同样用于编码,例如:
let testData = RequestData(symbols: [Symbol(name: "AAS1"),Symbol(name: "ASSD")], noOfSymbols: 2, msgtype: 15)
let encodedData = try JSONEncoder().encode(testData)
print(String(data: encodedData, encoding: .utf8) as AnyObject)发布于 2022-09-14 10:53:52
Any不能与Encodable一致,因此出现了错误。但你似乎根本不需要SymbolName。尝试:
struct RequestData:Encodable{
let Symbols:[[String:String]]
let NoOfSymbols:Int
let msgtype: Int
}这将创建适当的JSON (字典数组):
{"Symbols":[{"Name":"AAS1"},{"Name":"ASSD"}],"NoOfSymbols":2,"msgtype":15}https://stackoverflow.com/questions/73715501
复制相似问题