接API大概是在科技业的面试时最常问的问题了吧,但老实说资料的复杂性能不能接得正确好像才是关键,但假如单纯只是要回答会或不会的问题,再怎麽科技业菜鸟,一定是回答”会“的吧~~但对於面试官来说,会或不会其实满一翻两瞪眼,接接看就知道了~以下我们来试接看看,假如有什麽写错的地方,再请指教我~感恩
找到一些政府公开资讯,这边我们使用
https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=4
我们可以看到里面是json档案
将资料丢到https://jsoneditoronline.org/ 上查看树状结构,如下图
然後想想我们需要什麽资料,这边我们要呈现版本号(version)、UID、标题(title)、展览资讯(showInfo)、展览说明(descriptionFilterHtml)
根据树状图很清楚地看到资料分层的状态,除了展览资讯可以再往下展开外,其他皆为单层结构,
所以在定义Codable结构时(Codable 是 Encodable 和 Decodable 协议的类型别名),
只有展览资讯需要使用字典来解,如下所示:
//政府公开资讯 -艺文类
struct govOpenData: Codable {
let version:String
let UID:String
let title:String
let placeinfo:[[String:String?]]
let description:String
//在struct内列举,一定要写成enum CodingKeys: String, CodingKey
enum CodingKeys: String, CodingKey {
case version
case UID
case title
case placeinfo = "showInfo"
case description = "descriptionFilterHtml"
}
}
接着要来拷贝资料了,当然有很棒也很好用的套件,例如:Alamofire等,可以拷贝api资料,
但我们这边示范先用swift内建的方法,写法如下:
let urlStr3 = "https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=4"
if let url = URL(string: urlStr3) {
URLSession.shared.dataTask(with: url) { data, response , error in
if let data = data {
do {
let openDatas = try JSONDecoder().decode([govOpenData].self, from: data)
print("公开资料\(openDatas)")
} catch {
print("错误\(error)")
}
}
}.resume()
}
<<: Day 19 - Execution Context
紧接着昨天~ 我们写了一个func 并且利用结构加入阵列的方式写入每个变数的字串以及图片。 而後在生...
延续上篇的说明,在 Git 的世界,任何动作对 Git 来说都可以视为一个「修改」的动作。因此这篇要...
在上一篇我们成功建立了django专案 今天我们就要来加上一些东西,并且让我们的django跑起来啦...
如果类别本身已经济成某个妇类别,但现在又要继承Thread类别来建立执行绪,马上就会面临到一个问题-...
话说~ 从疫情到现在,已经不知道多久没出去玩了~ 好想出去玩玩喔~ 从开赛到现在已经默默地来到第二...