实战需求
SwiftUI 百度AI开放平台教程之 01 获取API access_token 基于SwiftJSON
本文价值与收获
看完本文后,您将能够作出下面的界面
SwiftUI 百度AI开放平台教程之 01 获取API access_token 基于SwiftJSON看完本文您将掌握的技能
- 纯Swift实现
- 根据文档要求生成请求参数
- Post数据到URL地址
- 通过SwiftJSON将网络data解析为JSON对象
基础开源库
为什么Swift中的典型JSON处理不好?
Swift对类型非常严格。但是,尽管显式打字有利于让我们免受错误的影响,但在处理JSON和其他本质上隐含类型的区域时,它会变得痛苦。
以Twitter API为例。假设我们想在Swift中检索一些推文的用户“名称”值(根据Twitter的API)。
代码如下所示:
if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
let user = statusesArray[0]["user"] as? [String: Any],
let username = user["name"] as? String {
// Finally we got the username
}
这不好。
即使我们使用可选的链条,也会很混乱:
if let JSONObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
let username = (JSONObject[0]["user"] as? [String: Any])?["name"] as? String {
// There's our username
}
无法辨认的混乱——对于一些真正简单的事情来说!
使用SwiftyJSON,您只需:
let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
//Now you got your value
}
别担心可选包装的事情。这是自动为您完成的。
let json = JSON(data: dataFromNetworking)
let result = json[999999]["wrong_key"]["wrong_name"]
if let userName = result.string {
//Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety
} else {
//Print the error
print(result.error)
}
实战代码
1、主界面
网友评论