解析无效的JSON Swift 4

时间:2017-09-29 12:17:05

标签: json swift4 codable

我的Json看起来像这样:

data = { "key":"value",
         "key":"value",
         "key":"value"}

我一直在尝试使用Swift4 Codable协议来解析JSON,并且已经将它用于了很好的效果,但对于我的生活,我无法打破这种结构。外部data =使其无效JSON但我似乎无法在尝试将数据传递给JSONDecoder之前找到修改数据的方法。

有什么方法可以将这些数据作为字符串接收,这样我就可以删除最外面的字符并解析剩余的JSON对象了吗?

2 个答案:

答案 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)
}