Swift从json数据中删除回调

时间:2017-03-16 13:34:12

标签: swift

我正在尝试通过网站上的公共API获取一些数据,但是当他们发送带回调的响应时。 例如:

execute({"d":{"username":"Avi","status":"Active","regdate":"11/03/2017"}});

我正在使用SwiftyJSON来解析它,但它返回null。

let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
    if error != nil {
        print("ERROR")
    }
    else {
        print("OK")
        let jd = JSON(data: data!)
        print(jd["d"]["username"])
    }
}

我已经尝试将其转换为NSString,但我无法应用任何替代品。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
    if error != nil {
        print("ERROR")
    }
    else {
        print("OK")
        var callback = NSString(data: data, encoding: String.Encoding.utf8)   
        let regex = try! NSRegularExpression(pattern: "\\{(.*)\\}", options:.caseInsensitive)
        let range = NSRange(location: 0, length: String(callback).characters.count)
        let results = regex.matches(in: String(callback), options:[], range:range)
        let jsonString = callback.substring(with: results[0].range)
        let jd = JSON(string: jsonString)
        print(jd["d"]["username"])
    }
}

答案 1 :(得分:0)

感谢Eric Aya,我已经解决了这个问题:

var dataString = String(data: data!, encoding: .utf8)
            dataString = dataString?.replacingOccurrences(of: "execute(", with: "")
            dataString = dataString?.replacingOccurrences(of: ");", with: "")
            let json = dataString?.data(using: .utf8)
            let jsonData = JSON(json!)