我有一个api调用,其响应是包含布尔值的数据。 它是否 JSON对象,因此JSONDecoder无法对其进行解码。有些字节需要转换为 Bool 。
respose in postman: true or false
要求什么:
let dataTask = session.dataTask(with: urlRequest) { responseData, urlResponse, err -> Void in
let data: Data = responseData
}
感谢您的提前帮助
答案 0 :(得分:2)
首先始终处理error
响应<74727565>
是字符串“ true”。最简单的解决方案是将responseData
与Data
let dataTask = session.dataTask(with: urlRequest) { responseData, _, err in
if let error = err { print(error); return }
let success = responseData! == Data("true".utf8) // or == Data([116,114,117,101])
}
如果响应为“ true”,则 success
为true
,否则为false
。
答案 1 :(得分:1)
此功能应执行以下操作:
func parse(data: Data) -> Bool? {
return String(data: data, encoding: .utf8).flatMap(Bool.init)
}
尝试一下:
let responseStrings = ["false", "true", "bogus"]
let responseBodies = responseStrings.map { Data($0.utf8) }
responseBodies.map(parse) // => [false, true, nil]