我的Json看起来像这样:
data = { "key":"value",
"key":"value",
"key":"value"}
我一直在尝试使用Swift4 Codable协议来解析JSON,并且已经将它用于了很好的效果,但对于我的生活,我无法打破这种结构。外部data =
使其无效JSON但我似乎无法在尝试将数据传递给JSONDecoder之前找到修改数据的方法。
有什么方法可以将这些数据作为字符串接收,这样我就可以删除最外面的字符并解析剩余的JSON对象了吗?
答案 0 :(得分:2)
func parseSomeUrl {
let someUrl = "http://api.someurl.com"
guard let url = URL(string: someUrl) else {return}
URLSession.shared.dataTask(with: url) {(myResponse, response, err) in
guard let data = data else {return}
do {
let data = try JSONDecoder().decode(myResponse.self, from: data)
}
} catch let jsonErr {
print("Error serializing json:", jsonErr)
}
}.resume()
答案 1 :(得分:2)
如果JSON序列化失败,并且您想更正格式错误的数据(并且无法修复API响应),则可以将数据转换为字符串,修改该字符串以创建有效的JSON,然后再转换回数据并将其解码为模型对象。对于上述情况:
func normalizeJSON(data: Data) -> Data? {
guard let stringRepresentation = String(data: data, encoding: .utf8) else { return nil }
let validJSONString = stringRepresentation.dropFirst(6)
return validJSONString.data(using: .utf8)
}