Swift网络请求与JSON之GET
需求:1,带header。2,接收的是json数据。如图所示

get.png
1,下面将获取“result”值
import Foundation
import Network
class DeviceCtrl: ObservableObject {
//URL,,改成你的
private static var thingsCloud = "https://pi.iot-api.com/app/device/v1/teabvlq/attributes"
//调用该方法就会进行网络请求
func getJSON() {
guard let thingsCloud = URL(string: Self.thingsCloud) else { return }
var request = URLRequest(url: thingsCloud)
request.addValue("application/json", forHTTPHeaderField: "Content-Type") //header1
request.addValue("tCfWNEZ", forHTTPHeaderField: "Project-Key") //header2
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if(data != nil) {
if let json = try? JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) as? [String : Any] {
let resultJSON = json["result"]! as AnyObject //这里是关键
print(resultJSON) //打印出来就是1了
}
} else {
print("数据是空的")
}
}
task.resume()
}
2,下面将获取“attributes”里面的任意一个值,以temperature为例
import Foundation
import Network
class DeviceCtrl: ObservableObject {
//替换你的
private static var thingsCloud = "https://gpi.iot-api.com/app/device/v1/teabclq/attributes"
func getJSON() {
guard let thingsCloud = URL(string: Self.thingsCloud) else { return }
var request = URLRequest(url: thingsCloud)
request.addValue("application/json", forHTTPHeaderField: "Content-Type") //替换你的header1
request.addValue("tCfWNEZ", forHTTPHeaderField: "Project-Key")//替换你的header2
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if(data != nil) {
if let json = try? JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) as? [String : Any] {
let attributesJSON = json["attributes"]! as AnyObject
//获取attributes里面的数据
if let nodeJSON = try? JSONSerialization.data(withJSONObject: attributesJSON, options: []) {
let node = try? JSONSerialization.jsonObject(with: nodeJSON, options: .mutableContainers) as AnyObject
//关键点来了,这里是获取temperature
print("\(String(describing: node!["temperature"]))")
}
}
} else {
print("数据是空的")
}
}
task.resume()
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)