首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我的请求出现在Json中时,如何快速地创建可编码请求?

当我的请求出现在Json中时,如何快速地创建可编码请求?
EN

Stack Overflow用户
提问于 2022-09-14 10:43:28
回答 2查看 92关注 0票数 0

我希望为以下JSON创建可编码的结构请求

代码语言:javascript
复制
{"Symbols":[{"Name":"AAS1"},{"Name":"ASSD"}],"NoOfSymbols":2,"msgtype":15}

我试着创建,但是获取error.Type 'SymbolName‘不符合’Encodable‘协议。

代码语言:javascript
复制
 struct RequestData:Encodable{
  let Symbols:[SymbolName]
  let NoOfSymbols:Int
  let msgtype: Int
 }

  struct SymbolName:Encodable{
  let Name : [String:Any]
 }
EN

回答 2

Stack Overflow用户

发布于 2022-09-14 11:36:20

使用https://app.quicktype.io/,您可以得到:

代码语言:javascript
复制
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"
    }
}

你可以这样解码:

代码语言:javascript
复制
 let response = try JSONDecoder().decode(RequestData.self, from: data)
 print("\n---> response: \(response)")

同样用于编码,例如:

代码语言:javascript
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2022-09-14 10:53:52

Any不能与Encodable一致,因此出现了错误。但你似乎根本不需要SymbolName。尝试:

代码语言:javascript
复制
struct RequestData:Encodable{
    let Symbols:[[String:String]]
    let NoOfSymbols:Int
    let msgtype: Int
}

这将创建适当的JSON (字典数组):

代码语言:javascript
复制
{"Symbols":[{"Name":"AAS1"},{"Name":"ASSD"}],"NoOfSymbols":2,"msgtype":15}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73715501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档