Я пытаюсь работать с данными JSON, возвращенными из службы. JSON, согласно валидаторам JSON, действителен и очень прост:
[{"ID":"SDS-T589863","TotalRisk":0.2458,"TotalScore":641.032}]
Однако, пытаясь разобрать его в моем коде Swift 4, он загадочно (по крайней мере для меня) недействителен. Вот моя попытка разобрать его:
// make the request
let task = session.dataTask(with: urlRequest) {
(data, response, error) in
// check for any errors
guard error == nil else {
print(error!)
return
}
// make sure we got data
guard let responseData = data else {
print("Error: did not receive data")
return
}
// this is fine:
guard let ddd = String(bytes: responseData, encoding: String.Encoding.utf8) else {
print("can't")
return
}
print(ddd) // prints [{"ID":"SDS-T589863","TotalRisk":0.2458,"TotalScore":641.032}] happily
do {
// cannot serialize
guard let risk = try JSONSerialization.jsonObject(with: responseData, options: [JSONSerialization.ReadingOptions.allowFragments])
as? [String: Any]
else {
print("error trying to convert data to JSON")
return
}
print(risk)
} catch {
print("error trying to convert data to JSON")
return
}
}
task.resume()
}
Предполагая, что у меня нет контроля над объектом JSON или форматом, в котором он мне возвращается, есть ли способ узнать, что не так с JSON, и, возможно, отформатировать ответ, чтобы его можно было правильно сериализовать?