解析无效 JSON Swift 4
parsing invalid JSON Swift 4
我的 Json 看起来像这样:
data = { "key":"value",
"key":"value",
"key":"value"}
我一直在尝试使用 Swift4 Codable 协议来解析 JSON 并使用它取得了很好的效果,但对于我来说,我无法破坏这种结构。外部 data =
使其无效 JSON 但在尝试将数据传递给 JSON 解码器之前,我似乎无法找到任何修改数据的方法。
有什么方法可以将数据作为字符串接收,这样我就可以删除最外面的字符并只解析剩余的 JSON 对象?
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()
如果 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)
}
我的 Json 看起来像这样:
data = { "key":"value",
"key":"value",
"key":"value"}
我一直在尝试使用 Swift4 Codable 协议来解析 JSON 并使用它取得了很好的效果,但对于我来说,我无法破坏这种结构。外部 data =
使其无效 JSON 但在尝试将数据传递给 JSON 解码器之前,我似乎无法找到任何修改数据的方法。
有什么方法可以将数据作为字符串接收,这样我就可以删除最外面的字符并只解析剩余的 JSON 对象?
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()
如果 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)
}