我正在尝试通过网站上的公共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,但我无法应用任何替代品。 有人可以帮忙吗?
答案 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!)