The Util Designer
Swift 利用JSONEncoder將Object轉換成JSON格式資料
xcode 13.4.1, swift 5.5, iOS 15.4
2022-09-06
JSON是很常用到的檔案格式,而在很多程式語言中都要相應的library可以拿來使用,Swift也不例外,Swift已內建了JSONEncoder來幫忙將Object轉換成JSON格式資料,不需要額外的library。
1. 假設以下的Object list,可將其轉成JSON String,並用Text元件顯示出來:
import SwiftUI

struct Fruit: Codable {
    let name : String
    let number : Int
}

struct JSONExample : View {
    @State var fruits : [Fruit] = [
        .init(name: "Apple", number: 11),
        .init(name: "Banana", number: 22),
        .init(name: "Cat", number: 33),
        .init(name: "Dog", number: 44)
    ]
    
    @State var jsonData : String = ""
    var body: some View {
        Text(jsonData)
        .onAppear {
            do {
                let encoder: JSONEncoder = JSONEncoder()
                let encoded = try encoder.encode(fruits)
                guard let jsonData = String(data: encoded, encoding: .utf8) else {
                    return
                }
                self.jsonData = jsonData
            } catch let error {
                print(error)
            }
        }
    }
}

在通常我們轉換成JSON資料後會把其保存起來,比如保存到檔案中。可以參考另一篇文章 SwiftUI 使用FileManager讀取和保存檔案的方法 如何使用檔案的讀存。