json数据的读取 JSONDecoder

21 阅读1分钟
{
    "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()

    }

}