в моя код не мога да декодирам отговора си, който получавам от api. Намирам данни, но моят декодер не може да декодира това, опитах се да намеря проблема, но не мога да открия това.
Моят код е:
var request = URLRequest(url: URL(string: "http://wsapi.easyservice.xyz/api/v1/carts/2")!,timeoutInterval: Double.infinity)
request.addValue("Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImI0YzFkOTRhN2ZmN2I0OGE1MTI3ZWMyZTAxYzJhYzMxNzRkODIxYjVkYTlhMTE3N2NlNTUxODViNTZjZDEyNjY2NWI2ZjVhOGU2NTM1ZDExIn0.eyJhdWQiOiIxIiwianRpIjoiYjRjMWQ5NGE3ZmY3YjQ4YTUxMjdlYzJlMDFjMmFjMzE3NGQ4MjFiNWRhOWExMTc3Y2U1NTE4NWI1NmNkMTI2NjY1YjZmNWE4ZTY1MzVkMTEiLCJpYXQiOjE2MDU1MDk1MDEsIm5iZiI6MTYwNTUwOTUwMSwiZXhwIjoxNjM3MDQ1NTAxLCJzdWIiOiI0NTIiLCJzY29wZXMiOltdfQ.cHR-jRG4atU8DtwqiQtxV9vjRg4CMR9dYH8AGpgKgOmbylSLlf8eYf76LmwVOZl9Ii1uxHXvK95_43suYuO_6REE_pMEgRKELxM9LZVPSt6VboXENqwBZ_1GCu4nobBUPPqC56SXYqTVaLlTSjts7O3kpXrPqhrEIWV0UQYq9KS6bUFMkQuuyDrXoL6JVuJ-ntUzU42QgXjaQ0usQah3-gJZGAB684bp6LP3_RTInuIDKarGERPKHIFz94V_jvpkixKBUQW1uDJpcSh9v2ZR1PVlQ1pMaYGaZN50OrTkqY9NTi16PpUhOrmzCcXFLxWC4S-s2FDlXfPZNS-1kEIguS38ecydyBW_FHSzJQFQHZ5STTNiLxB8B5-6OUwEaaXBl9XuJJBlcmUrMiQNjqb2TXL9ZNw1R6Htqgrn2En0RjgzuWXSLui1PgkyRJMifg2cphPpQlNhgkXqZrPz27_xp8CCfUjdiEFEWFdFj-4_grRPjLXA48alG6KeFGi_Vu65rVNCz9yF5M4U43G9KJZCg8-nppKZ623OvE4YxU8IS7SuTuQIHChFPaVef-D7GYLnZEPl7L7bo5IuUiwZ67wP0zieKsEya3_LDNy_tUG48k-y5KTl0OOIn4GtmDdCAK4qKcAC_0OjWmktesJRbgh3Nm9O_CIl_DBUZ89fMks0SsA", forHTTPHeaderField: "Authorization")
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let jsonResponse = try? JSONDecoder().decode(GetItCartModel.self, from: data!) {
print(jsonResponse)
}
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
и използвам този модел като GetItCartModel
// MARK: - GetItCartModel
struct GetItCartModel: Codable {
var success: Bool?
var message: String?
var data: GetItCartModelDataClass?
}
// MARK: - DataClass
struct GetItCartModelDataClass: Codable {
var id, userID, serviceID: Int?
var createdAt, updatedAt: String?
var items: [GetItCartModelItem]?
enum CodingKeys: String, CodingKey {
case id
case userID = "user_id"
case serviceID = "service_id"
case createdAt = "created_at"
case updatedAt = "updated_at"
case items
}
}
// MARK: - Item
struct GetItCartModelItem: Codable {
var id, cartID: Int?
var details: GetItCartModelDetails?
var attachments: JSONNull?
var quantity, createdAt, updatedAt: String?
enum CodingKeys: String, CodingKey {
case id
case cartID = "cart_id"
case details, attachments, quantity
case createdAt = "created_at"
case updatedAt = "updated_at"
}
}
// MARK: - Details
struct GetItCartModelDetails: Codable {
var brandID: Int?
var brandName: String?
var icategoryIdd: Int?
var categoryName, endDate: String?
var id, orderItemPrice: Int?
var product: Product?
var quantity: Int?
var startDate: String?
var totalDays: Int?
var typeID: Int?
var typeName: String?
enum CodingKeys: String, CodingKey {
case brandID = "brandId"
case brandName, icategoryIdd, categoryName, endDate, id, orderItemPrice, product, quantity, startDate, totalDays
case typeID = "typeId"
case typeName
}
}
// MARK: - Product
struct GetItCartModelProduct: Codable {
var categorizableID: Int?
var createdAt, productDescription: String?
var id: Int?
var price: String?
var thumbnail: String?
var title, updatedAt: String?
enum CodingKeys: String, CodingKey {
case categorizableID = "categorizable_id"
case createdAt = "created_at"
case productDescription = "description"
case id, price, thumbnail, title
case updatedAt = "updated_at"
}
}
Моля, помогнете ли ми да намеря действителния проблем, пред който съм изправен, за да преобразувам отговора си в този модел.
Забележка: Ето отговора на пощальона в JSON
{
"success": true,
"message": "items list",
"data": {
"id": 23,
"user_id": 452,
"service_id": 2,
"created_at": "2020-11-16 13:21:36",
"updated_at": "2020-11-16 13:21:36",
"items": [
{
"id": 54,
"cart_id": 23,
"details": {
"brandId": 44,
"brandName": "Apple",
"icategoryIdd": 41,
"categoryName": "Mobile Equipment",
"endDate": "2020-12-26",
"id": 0,
"orderItemPrice": 4920,
"product": {
"categorizable_id": 44,
"created_at": "2020-07-24 05:46:07",
"description": "Description",
"id": 11,
"price": "120.00",
"thumbnail": "https://hexamatics.s3.ap-south-1.amazonaws.com/app/photos/product/kkoBnHm7cqjWzPTh4nPdaxuPaTDylNdNDqlCFKLz.jpeg",
"title": "Test product",
"updated_at": "2020-08-25 12:14:21"
},
"quantity": 1,
"startDate": "2020-11-16",
"totalDays": 41,
"typeId": 42,
"typeName": "Display"
},
"attachments": null,
"quantity": "1",
"created_at": "2020-11-16 13:21:36",
"updated_at": "2020-11-16 13:21:36"
},
{
"id": 97,
"cart_id": 23,
"details": {
"categoryName": "Mobile Equipment",
"startDate": "2020-11-18 09:20:32 +0000",
"brandId": "44",
"product": {
"thumbnail": "https://hexamatics.s3.ap-south-1.amazonaws.com/app/photos/product/kkoBnHm7cqjWzPTh4nPdaxuPaTDylNdNDqlCFKLz.jpeg",
"categorizable_id": 44,
"created_at": "2020-07-24 05:46:07",
"title": "Test product",
"updated_at": "2020-08-25 12:14:21",
"description": "Description",
"id": 11,
"price": "120.00"
},
"icategoryIdd": "41",
"typeId": "42",
"typeName": "Display",
"brandName": "Apple",
"quantity": "1",
"endDate": "2020-11-18 09:20:36 +0000"
},
"attachments": null,
"quantity": "1",
"created_at": "2020-11-18 09:20:51",
"updated_at": "2020-11-18 09:20:51"
},
{
"id": 98,
"cart_id": 23,
"details": {
"brandId": 44,
"brandName": "Apple",
"icategoryIdd": 41,
"categoryName": "Mobile Equipment",
"endDate": "2020-11-18",
"id": 0,
"orderItemPrice": 120,
"product": {
"categorizable_id": 44,
"created_at": "2020-07-24 05:46:07",
"description": "Description",
"id": 11,
"price": "120.00",
"thumbnail": "https://hexamatics.s3.ap-south-1.amazonaws.com/app/photos/product/kkoBnHm7cqjWzPTh4nPdaxuPaTDylNdNDqlCFKLz.jpeg",
"title": "Test product",
"updated_at": "2020-08-25 12:14:21"
},
"quantity": 1,
"startDate": "2020-11-18",
"totalDays": 1,
"typeId": 42,
"typeName": "Display"
},
"attachments": null,
"quantity": "1",
"created_at": "2020-11-18 10:16:18",
"updated_at": "2020-11-18 10:16:18"
}
]
}
}
try?
, когато декодирате json, изтеглен от някакъв api. Използвайтеtry
сdo/catch
и отпечатайте грешката в уловката,catch { print(error) }
. Може би това дори ще ви помогне да разрешите този проблем сами :). Друго нещо, което току-що забелязах е, че първо се опитвате да декодирате данните, след което проверявате дали сте получили някакви данни, това, разбира се, трябва да се направи в обратния ред. - person Joakim Danielson   schedule 18.11.2020