0

我的 Json 看起来像这样:

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

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

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

4

2 回答 2

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)
}
于 2018-09-16T14:39:20.067 回答
1
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()
于 2018-01-10T23:45:09.133 回答