簡體   English   中英

Swift:將平面 JSON 解碼為結構化對象

[英]Swift: Decode flat JSON to an structured object

想知道是否有一種簡單的方法可以將簡單的平面 json 轉換為具有結構的結構

json:

 {
        "date": "2022-02-24T00:00:00.000Z",
        "personel": 800,
        "plane": 7,
        "drone": 6,
    }

我想要的是得到這樣的結構:

struct Day: Codable, Identifiable {
    var id = UUID()
    var date : String
    var dayData: [DayData]

    struct DayData: Codable {
    var personel: Int
    var plane: Int
    var drone: Int
   }
}

我認為應該有一些簡單的方法讓它工作

正如評論中所指定的,最好創建臨時DBObject並用它初始化您的Day對象。

簡單的 DBObject:

struct DBObject: Decodable {
    let date: String?
    let personel, plane, drone: Int?
}

init()添加到您的Day

struct Day: Codable, Identifiable {
    var id = UUID()
    var date : String
    var dayData: [DayData]
    
    init(from dbObject: DBObject) {
        let dayData = DayData(personel: dbObject.personel ?? 0,
                              plane: dbObject.plane ?? 0,
                              drone: dbObject.drone ?? 0)
        self.dayData = [dayData]
        self.date = dbObject.date ?? ""
    }
    
    struct DayData: Codable {
        var personel: Int
        var plane: Int
        var drone: Int
    }
}

Data響應中解碼日:

func returnDay(from dataResponse: Data) -> Day {
    do {
        let decoder = JSONDecoder()
        let dbObject = try decoder.decode(DBObject.self,
                                          from: dataResponse)
        return Day(from: dbObject)
    } catch {
        fatalError("Cannot decode object")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM