JSONDecoder
将抓下来的资讯透过JSONDecoder这个将收集到的资讯进行使用
下面做个简单的示范:
// 假设今天有个struct名为Price
struct Price:Codable{
var apple:Int
var banana:Int
var pineapple:Int
}
// 本地端建立一个json档
let json = """
{
"apple":10,
"banana":20,
"pineapple":30
}
""".data(using: .utf8)!
// 建立一个JSONDecoder实例
let decoder = JSONDecoder()
// 透过解析json档,将资料储存在自定义的struct中
let price = try decoder.decode(Product.self,from:json)
// 印出10
print(price.apple)
需要注意JSON里面是{}还是[]
使用[]符号的是Array
使用{}符号的是物件
这两种在结构上存在差异:
struct decodeAll:Codable{
// 代表里面是[]阵列,还有东西在里面
let basket:[Ball]
// 代表是物件,直接使用里面的名字即可
let basketball:String
}
// []阵列里面的key-value搭配
struct Ball:Codable{
let Ballname:String
}
另外有个例子:
"Basket":["BasketBall"]
使用JSONEditorOnline看到的会是
Basket[1]
[0:"BasketBall"]
这样要怎麽解决,通常会使用key值作为decode媒介,但是这个没有key
这边会使用
struct decodeBasket:Codable{
let Basket:[String]
}
直接将里面的物件,用所属的属性decode
应用上会先使用URLSession进行网路连结
let url = URL(string:"http:.....")
let session = URLSession.shared
//
let task = session.dataTask(with:URLRequest(url:url!)){(data,res,error) in
// 会回传(data,res,error)资料,下面的函式都是基於这三个回传资料进行
if error != nil{
print(error!)
return
}
let decoder = JSONDecoder()
// 使用DecumentData作为decode的结构,这边省略写下DocumentData的详细结构
guard document = try decoder.decode(DocumentData.self,from:data!)else{
print("ERROR")
return
}
}
task.resume()
<<: Day6 Sideproject(作品集) from 0 to 1 -定义功能
>>: 【後转前要多久】# Day05 HTML - 语意标签 & 引用CSS
昨日提及如何於程序内显示图片, 而今天要介绍的内容同样与图片有关, 那就是如何修改App的Icon。...
完全参考,此处为整理笔记 [有趣面试题] 网页效能问题改善之 Debounce & Thro...
本篇为记录不同的Java资料型态在记忆体中的变化情形,参考JVM 的 Stack 和 Heap并重点...
程序版本: Flutter 2.2.1 使用JSONPlaceholder为 Free fake A...
影片在这里 分类:选股 型态 重点整理 金三角交叉:5 日均线先向上突破 10 日均线後再突破 20...