解析无效 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)
}