如何存储 Json 注册响应 API ?并得到 "The data couldn’t be read because it isn’t in the correct format." 的错误
How to Store Json Response Of Registration API ? and Getting error of "The data couldn’t be read because it isn’t in the correct format."
你好,我正在尝试存储我的 json 对我的模型的响应 Class,但我收到错误消息“无法读取数据,因为它不在格式正确。”我的 Api 工作正常,唯一的问题是没有将我的数据存储到数据模型 Class。
这是我的详细信息
我的Json回复
{
"flag": "1",
"message": "Data inserted.",
"customerId": "60",
"firstName": "fatehlal",
"lastName": "pra",
"animalName": "cat",
"isAround": "1",
"comapnyId": "2",
"company_logo": "http://192.168.1.228/public/img/logosign.png",
"company_name": "Admin",
"mobileNumber": "2345678901"
}
我的寄存器模型
import Foundation
struct RegisterModel : Codable {
let flag : String?
let message : String?
let customerId : String?
let firstName : String?
let lastName : String?
let animalName : String?
let isAround : String?
let comapnyId : String?
let company_logo : String?
let company_name : String?
let mobileNumber : String?
enum CodingKeys: String, CodingKey {
case flag = "flag"
case message = "message"
case customerId = "customerId"
case firstName = "firstName"
case lastName = "lastName"
case animalName = "animalName"
case isAround = "isAround"
case comapnyId = "comapnyId"
case company_logo = "company_logo"
case company_name = "company_name"
case mobileNumber = "mobileNumber"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
flag = try values.decodeIfPresent(String.self, forKey: .flag)
message = try values.decodeIfPresent(String.self, forKey: .message)
customerId = try values.decodeIfPresent(String.self, forKey: .customerId)
firstName = try values.decodeIfPresent(String.self, forKey: .firstName)
lastName = try values.decodeIfPresent(String.self, forKey: .lastName)
animalName = try values.decodeIfPresent(String.self, forKey: .animalName)
isAround = try values.decodeIfPresent(String.self, forKey: .isAround)
comapnyId = try values.decodeIfPresent(String.self, forKey: .comapnyId)
company_logo = try values.decodeIfPresent(String.self, forKey: .company_logo)
company_name = try values.decodeIfPresent(String.self, forKey: .company_name)
mobileNumber = try values.decodeIfPresent(String.self, forKey: .mobileNumber)
}
}
我的 Alamofire 方法
var registerDetail : RegisterModel?
AF.request("http://192.168.1.228/public/api/register", method: .post, parameters: param, encoding: JSONEncoding.default, headers: nil).response { response in
switch response.result {
case .success(let data) :
do {
print("SuccessFully Registerd")
debugPrint(response.response!)
let dataResponse = try JSONDecoder().decode(RegisterModel.self, from: data!)
self.registerDetail = dataResponse
} catch let error {
debugPrint(error.localizedDescription)
}
case .failure(let error):
print(error)
}
}
根据您的数据,使用:let isAround : Int?
你好,我正在尝试存储我的 json 对我的模型的响应 Class,但我收到错误消息“无法读取数据,因为它不在格式正确。”我的 Api 工作正常,唯一的问题是没有将我的数据存储到数据模型 Class。
这是我的详细信息
我的Json回复
{
"flag": "1",
"message": "Data inserted.",
"customerId": "60",
"firstName": "fatehlal",
"lastName": "pra",
"animalName": "cat",
"isAround": "1",
"comapnyId": "2",
"company_logo": "http://192.168.1.228/public/img/logosign.png",
"company_name": "Admin",
"mobileNumber": "2345678901"
}
我的寄存器模型
import Foundation
struct RegisterModel : Codable {
let flag : String?
let message : String?
let customerId : String?
let firstName : String?
let lastName : String?
let animalName : String?
let isAround : String?
let comapnyId : String?
let company_logo : String?
let company_name : String?
let mobileNumber : String?
enum CodingKeys: String, CodingKey {
case flag = "flag"
case message = "message"
case customerId = "customerId"
case firstName = "firstName"
case lastName = "lastName"
case animalName = "animalName"
case isAround = "isAround"
case comapnyId = "comapnyId"
case company_logo = "company_logo"
case company_name = "company_name"
case mobileNumber = "mobileNumber"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
flag = try values.decodeIfPresent(String.self, forKey: .flag)
message = try values.decodeIfPresent(String.self, forKey: .message)
customerId = try values.decodeIfPresent(String.self, forKey: .customerId)
firstName = try values.decodeIfPresent(String.self, forKey: .firstName)
lastName = try values.decodeIfPresent(String.self, forKey: .lastName)
animalName = try values.decodeIfPresent(String.self, forKey: .animalName)
isAround = try values.decodeIfPresent(String.self, forKey: .isAround)
comapnyId = try values.decodeIfPresent(String.self, forKey: .comapnyId)
company_logo = try values.decodeIfPresent(String.self, forKey: .company_logo)
company_name = try values.decodeIfPresent(String.self, forKey: .company_name)
mobileNumber = try values.decodeIfPresent(String.self, forKey: .mobileNumber)
}
}
我的 Alamofire 方法
var registerDetail : RegisterModel?
AF.request("http://192.168.1.228/public/api/register", method: .post, parameters: param, encoding: JSONEncoding.default, headers: nil).response { response in
switch response.result {
case .success(let data) :
do {
print("SuccessFully Registerd")
debugPrint(response.response!)
let dataResponse = try JSONDecoder().decode(RegisterModel.self, from: data!)
self.registerDetail = dataResponse
} catch let error {
debugPrint(error.localizedDescription)
}
case .failure(let error):
print(error)
}
}
根据您的数据,使用:let isAround : Int?