Массив декодирования JsonDecoder с одним и тем же ключом имеет другой тип данных в swift - PullRequest
0 голосов
/ 11 июля 2020
 let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!)


struct MenuResponseModel : Codable {
  let ratingAverage : Double?
  let ratingcount : Int?
}

Пример ответа:

[{
"ratingAverage": 3,
"reviewCount": 100,
},{
"ratingAverage": 4.2,
"reviewCount": 10,
}]

ratingAverage ==> Иногда он выглядит как «Double» или «Int»

Может кто-нибудь мне подсказал, как я могу это сделать? что с использованием подхода Codable?

1 Ответ

0 голосов
/ 11 июля 2020

Как я уже сказал в комментариях, Double учитывает как Int, так и значения с плавающей запятой.

Есть две основные проблемы:

  1. Вам нужно декодировать массив [MenuResponseModel]
  2. Ключ reviewCount не соответствует члену структуры ratingcount

Это декодирует JSON правильно

let jsonString = """
[{"ratingAverage": 3,"reviewCount": 100},
 {"ratingAverage": 4.2,"reviewCount": 10}
]
"""

struct MenuResponseModel : Codable {
  let ratingAverage : Double
  let reviewCount : Int
}

let data = Data(jsonString.utf8)

do {
    let result = try JSONDecoder().decode([MenuResponseModel].self, from: data)
    print(result)
} catch {
    print(error)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...