如何在两个不同的键中解码具有相同变量的 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?
}
这里可以看到MyTurn
和TheirTurn
是完全一样的,同样的变量,只是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
}
它将减少您创建两个不同结构的工作量。
我正在学习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?
}
这里可以看到MyTurn
和TheirTurn
是完全一样的,同样的变量,只是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
}
它将减少您创建两个不同结构的工作量。