{
"list":[
{
"id":1,
"title":"java",
"subtitle":"一种编程语言"
},
{
"id":2,
"title":"ios",
"subtitle":"失业中"
},
{
"id":3,
"title":"vue",
"subtitle":"一种前端语言"
}
]
}
解析本地json数据
// 解析json
import Foundation
struct User2:Codable,Identifiable{
let id:Int
let title:String
let subtitle:String
}
**struct** JsonData:Codable{
**var** list:[User2]
}
func loadJsonData() -> [User2]{
let filename:String = "book.json"
guard let url = Bundle.main.url(forResource: filename, withExtension: nil) else{
fatalError("can not find\(filename) in main boundle")
}
guard let data = try? Data(contentsOf: url) else{
fatalError("can not load \(url)")
}
guard let Jsondata = try? JSONDecoder().decode(JsonData.self, from:data) else{
fatalError("can not parse post list json data")
}
return Jsondata.list
}
视图显示
import SwiftUI
// json 数据的读取, JsonDecoder
struct JsonView: View {
let jsonData:JsonData
init() {
self.jsonData = JsonData(list: loadJsonData())
}
var body: some View {
VStack{
List(self.jsonData.list) { user **in**
Text(user.title).font(.title)
Text(user.subtitle).font(.subheadline).foregroundColor(.gray)
}
}
}
}
struct JsonView_Previews: PreviewProvider {
static var previews: **some** View {
JsonView()
}
}