json - 在将 json 解码为 swift 模型类时出错
问题描述
我正在尝试解码 JSON 响应并每次都收到错误。我还尝试从在线工具制作模型类,但它没有将其解码为 swift 模型类。当我打印本地化描述时,它表明给定的数据格式不正确。下面是我的模型课。正如错误所说
Swift.DecodingError.typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "ResponseDescription", intValue: nil)], debugDescription: "预期解码 Dictionary 但找到了一个字符串/数据。",基础错误:无))
模型类
struct ResponseLogin: Decodable{
let Status:Bool
let Message: String
let ResponseDescription: ResponseDescription
let EncryptStatus: Bool
struct ResponseDescription: Decodable{
let ID:Int
let CustomerWebID: Int
let CustomerWalletID: Int
let CellNo: String
let FirstName: String
let LastName: String
let Email: String
let SahulatWalletCard: String
let City: String
let Address: String
let ProfilePicture: String
let TokenNo: String
let ResponseStatus: String
let ResponseMessage: String
}
}
JSON 响应
{
"Status": true,
"Message":"Login Successfully",
"ResponseDescription":
{
"ID": 1459,
"CustomerWebID": 6275,
"CustomerWalletID": 321123,
"CellNo": "0332334001",
"FirstName": "Haris",
"LastName": "Khan",
"Email": "myemail@gmail.com",
"SahulatWalletCard": "3085040101018537",
"City": "Karachi",
"RegionID": 1,
"Address": "Test1",
"ProfilePicture": "http://images/mypic.png",
"TokenNo": "Xxxx==2121mcmvjmdx!",
"ResponseStatus": true,
"ResponseMessage": "Data Found"
},
"EncryptStatus": true
}
Decrypted JSON
{
"Status": true,
"Message": "Login Successfully",
"ResponseDescription":"Qmw25wKdmOpbUxP3pMRGnVP9yHcsJhVISyA6s3oBHrkpGsAlbR27xsbcsZqXd0z3A6h1tB1i/sOZFuZaMTNMBTevq3N7xG8KBw50WauLDHFqJ4JbAkh6RKUPOLcpmdIrEZ2jgfJrA+dNrftbjIjnEohg4jF/oLDKs7sjE1Ozk/3C1JnFTHNnc5vSrQNNUUOzrB4+QOxMGqpdNrF4BCh7YQ9xT1w/8D3BNM/7LXhb5txqbCEdRI7yf6R+tw5Mey4NR6NXAYdfGCnWKLsrnU2FwTKKRG2PqBZ7hLa2Ee8Uva0OAStvkldMWs8Heh9oS8T3Z39goyxFJme3N7x9JRzZyHmTbc6JqPI2kwWDwYztxxK6bft4tXwumPjJHx91ScNm2JCLQworqvlyHeOa8oBoXK6xym/PrAPCJ3Mwa3MHXhrU8U8mONFmtp3zZdPyXmHayE6E9meZtxbABEihBkOra4257s5rF3Zyr8WtHbwXYMA1dDF/lESwjiyG9Q/KHHgem8QyB3P9xSVi5vKqfFnqZfBusYTMNqDF+V8C2L9YjEp2bdyq7lUPEu0jWMRqpYDyAO+Z864cwbnb0V1fEfE3xI7Z8/PqlQ5hp7mR5VwL4k6pekagZDNXKo4qOTy6PGsod0x7KY0bLddL6qv1MrcyzcH7K1016fy5R/3DemkAmXn0/d6OleVHDr8zpC9D4ZZrY8JghRCA7Vb/b5itX9VC41dL/3PcZBbXsiOFnnJmr/2zNj6QXBK4+b/S42Wh2vBK",
"EncryptStatus": true
}
任何帮助都可以让我指出我在这个问题上的错误。
解决方案
typealias Codable = 可编码 & 可解码
它同时符合 Encodable 和 Decodable。
struct MovieDetail: Codable {
var language: String
var genre: String
var releaseDate: String
var bannerImageUrl: String
}
struct Movie: Codable {
var movieId: Int
var name: String
var movieDetails: MovieDetail
}
[更多详情]
https://medium.com/@manojkarkie/encodable-and-decodable-in-swift-4-747328a7c7c5
推荐阅读
- reactjs - 从我在 react-table 中发送请求的 api 获取
- hibernate - Spring Boot:“字段需要一个找不到的 'javax.persistence.EntityManagerFactory' 类型的 bean。”
- javascript - REACTJS 和 API 将 Api 的值传递给另一个页面
- powershell - 如何在 Powershell 中使用 RestApi 从 AzureDevOps 获取工作项
- excel - Gmail,线程中的第一封电子邮件,标签登录谷歌表
- reactjs - 多次渲染同一组件时避免多次 api 调用
- vuetify.js - 以编程方式更改 v-data-table 中的选择:v-data-table 中的错误或我的代码中的错误?
- security - 访问基于 Web 的软件的用户是否可以看到源代码?
- java - 将对象插入数组 json 数据
- excel - 间接使用 SUMIFS