Если вы анализируете его в словаре, то самым простым решением будет преобразование String
в Data
и использование JSONSerialization
:
if let data = string.data(using: .utf8) {
do {
let responseArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]]
print(responseArray)
}
catch {
print(error)
}
}
Но, конечно, было бы лучше обработать егокак модель Codable
, в этом случае ее снова так же просто, как:
try JSONDecoder().decode([Item].self, from: data)
При условии, что у вас есть действительная модель Decodable
, например:
struct Item: Decodable {
let id: Int
let name: String
//add the other keys you want to use (note its type sensitive)
enum CodingKeys: String, CodingKey {
case id = "ID"
case name = "Name"
}
}
Наконец, избегайте строковых jsons, потому что это простой источник ошибок.
Неправильные строки или небольшие / большие отклонения в структуре могут легко остаться незамеченными.
Пусть бэкэнд-команда знает, что они должны следовать протоколу в своем API, что еепотребители могут положиться на него.
Устанавливая формат json, он, по сути, похож на контракт, который четко демонстрирует его содержание и цель.
Отправка строкового json просто ленива и плохо отражается на его конструкторе, imho.