Я хочу разобрать JSON с помощью декодируемого, но получаю несоответствие типа ошибки, например:
Swift.DecodingError.Context(codingPath: [], debugDescription: «Ожидается декодирование массива, но вместо этого найден словарь».
Мой JSON:
{
"code": 0,
"data": {
"_id": "string",
"title": "string",
"images": [
"string"
],
"shortDesc": "string",
"desc": "string",
"price": 0,
"discountPrice": 0,
"quantity": 0,
"category": {
"name": "string",
"val": "string"
},
"brand": {
"name": "string",
"val": "string"
},
"variants": [
{
"name": "string",
"value": "string",
"quantity": 0,
"variantCode": "string"
}
],
"stockCode": "string",
"updatedDate": "2018-06-05T14:04:51.226Z",
"status": true,
"isDeleted": true,
"isNew": true,
"freeCargo": true,
"createDate": "2018-06-05T14:04:51.226Z",
"note1": "string",
"note2": "string",
"note3": "string",
"shop": {
"name": "string",
"val": "string"
}
},
"error": "string"
}
МОЯ МОДЕЛЬ:
struct ProductDetail : Decodable {
let code : Int = 0
let error : String = ""
var data : NestedData? = nil
}
ВЛОЖЕННЫЕ ДАННЫЕ:
struct NestedData : Decodable{
let _id : String = ""
let title : String = ""
let images : [String] = []
let shortDesc : String = ""
let desc : String = ""
let price : Int = 0
let discountPrice : Int = 0
let quantity : Int = 0
let updatedDate : String = ""
let status : Bool = false
let isDeleted : Bool = false
let isNew : Bool = false
let freeCargo : Bool = false
let createDate : String = ""
let note1: String = ""
let note2: String = ""
let note3: String = ""
let variants : [variants]? = nil
let brand : brand? = nil
let category :category? = nil
let shop : shop? = nil
}
ОБЪЕКТЫ:
struct variants : Decodable{
let name : String
let val : String
let quantity : Int
let variantCode : String
}
struct brand : Decodable{
let name : String
let val : String
}
struct category : Decodable{
let name : String
let val : String
}
struct shop : Decodable{
let name : String
let val : String
}
Я не понимаю, почему я получаю сообщение об ошибке, Консоль говорит, что ожидается массив, но словарь найден, но, к сожалению, я не понимаю.
ProductDetail
s — либо в строке JSON, полученной с сервера, либо по предоставленному типу вJSONDecoder
. - person Dan Karbayev   schedule 05.06.2018