如何在两个不同的键中解码具有相同变量的 JSON?

How to decode a JSON with same variables in two different keys?

我正在学习Decodables。这是我的模型:

struct DQModel: Decodable{  
    var details: DQDetails
}

struct DQDetails: Decodable {   
    var weekly_details: WeeklyDetails   
    var your_turn: MyTurn   
    var their_turn: TheirTurn    
}

struct  WeeklyDetails: Decodable {  
    var win: Int?   
    var loss: Int?
}

struct MyTurn: Decodable {
    var name: String?   
    var pic: String?    
    var current: String?    
    var time: String?   
    var win: Int?   
    var loss: Int?    
}

struct TheirTurn: Decodable {   
    var name: String?   
    var pic: String?    
    var current: String?    
    var time: String?   
    var win: Int?   
    var loss: Int?
}

这里可以看到MyTurnTheirTurn是完全一样的,同样的变量,只是key不同而已。有什么方法可以让我不必再次重写 variables 吗?或者在未来,如果有任何案例到达,就像 10 个中的 9 个一样,我有什么方法可以减少 copy/paste 工作量?

提前致谢。

您可以为回合创建一个通用的 'struct',并在两种情况下(myTurn 和 theirTurn)都使用它们。您可以按以下方式执行此操作:

struct Turn: Decodable {

var name: String?

var pic: String?

var current: String?

var time: String?

var win: Int?

var loss: Int?
}

并像这样使用:

struct DQDetails: Decodable {

var weekly_details: WeeklyDetails

var your_turn: Turn

var their_turn: Turn

}

它将减少您创建两个不同结构的工作量。