如何快速将异质对象与模型映射?

时间:2019-10-14 07:18:23

标签: json swift decodable encodable

好的,所以我被模型困在解码此特定json的最后一项,“有效载荷” 始终为零,在此“有效载荷” 对象中我可以创建自己的json结构,我可以解码“文本”,但是当涉及到最后一个项目“有效载荷” 时,它不起作用并且始终为零。

我没有使用任何第三方库。

我的模型班。

struct DailougeFlowModel : Decodable {
//    private enum CodingKeys : String, CodingKey {
//        case responseId = "responseId"
//        case queryResult = "queryResult"
//    }
let responseId : String?
let queryResult : QueryResult?
}

 struct QueryResult: Decodable {
 //    private enum CodingKeys : String, CodingKey {
 //        case fulfillmentText = "fulfillmentText"
 //        case fulfillmentMessages = "fulfillmentMessages"
 //    }
let fulfillmentText : String?
let fulfillmentMessages : [FulfillmentMessages]?

}

struct FulfillmentMessages: Decodable {
let text : TextModel?
let payLoad : Questions?
}

struct TextModel: Decodable {
let text : [String]?
}

struct Questions : Decodable{
let questions : [String]?
 }

这个json是我从dailogeflow(V2)中得到的。我正在将聊天机器人集成到应用程序中。

{
"responseId": "2b879f78-cc05-4735-a7e8-067fdb53a81d-f6406966",
"queryResult": {
"fulfillmentMessages": [
  {
    "text": {
      "text": [
        "Text Here"
      ]
    }
  },
  {
    "text": {
      "text": [
        "Another Reply For Hi"
      ]
    }
  },
  {
    "payload": {
      "questions": [
        "Question One",
        "Question Two",
        "Question Three",
        "Question Four"
      ]
    }
  }
]
}
}

1 个答案:

答案 0 :(得分:1)

按照json响应中的说明指定内部模型名称,如果要指定自己的模型名称,则需要像第一个模型“ ResponseModel”一样在每个模型中设置一个枚举

gulp copy:second