swift - 在 Json for Swift 中从服务器接收数据
问题描述
我使用此代码将用户登录到服务器,我工作得很好,但我无法获取令牌
在这里,我收到登录数据String
(最后一个 IF)
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = body.percentEscaped().data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("error: \(error)")
} else {
if let response = response as? HTTPURLResponse {
print("statusCode: \(response.statusCode)")
}
if let data = data, let dataString = String(data: data, encoding: .utf8) {
print("data: \(dataString)")
}
}
}
有什么办法可以将它转换为 Json 吗?或者总的来说,在登录过程中,我最好将数据作为 Json 或 String 获取?
谢谢
解决方案
从 Swift 4 开始,Swift 有了自己的 JSON Encoder和Decoder
这是 Apple 的参考页面。检查一下并弄清楚你需要什么。
这是我的非常简单的示例代码。
// YourTokenModel.swift
struct YourTokenModel: Decodable {
var token: String
}
// YourTokenController.swift
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = body.percentEscaped().data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("There is a error while communication")
return
}
guard let data = data else {
print("No data comes out. Returning...")
return
}
do {
let decodedData = try JSONDecoder().decode(YourTokenModel.self, from: data)
print(decodedData.token)
// DO WHATEVER YOU WANT! //
} catch let error {
print("There is a error while decoding your JSON Model")
print(error)
}
}
task.resume()
推荐阅读
- reporting-services - SSRS 报告 - 查找当前正在呈现的 tablix
- excel - 通过电子邮件地址进行 VLOOKUP 搜索在 LibreOffice 或 Google 表格中不起作用
- azure - 什么时候 Azure IoT Hub 比 IoT Central 更受欢迎?
- spring-boot - 签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥
- node.js - Multer 不在本地文件夹中保存图像
- node.js - 这里有什么问题我必须在“react”上做 NPM 链接:“^16.13.1”因为应用程序报告重复 React
- excel - 复制并粘贴到另一个工作表中的工作表
- ffmpeg - 关于使用 ffmpeg 的输出文件名
- reactjs - 在组件之上添加父组件时,子组件的状态会转移到父组件
- c++ - 为什么不能使用 SDL 播放音乐