我正在编写一个 REST Web 应用程序客户端,并使用如下所示的 JSON:
JSON1
{
"device" : "iPhone"
"manufacturer" : "Apple"
"id" : 42
"owner" : "Steve"
}
但是 API 也可以给我这种 JSON
JSON2
{
"device" : "iPhone"
"manufacturer" : "Apple"
"id" : 42
"latitude" : 3.1415926535
"longitude" : 2.7182818284
}
所以现在在我的应用程序中,我创建了一个符合 Codable 协议的结构
struct MyStruct : Codable {
var name: String
var manufacturer: String
var owner: String?
// I prefer to use a property of type Location rather than 2 variables
var location: Location? {
guard let latitude = latitude, let longitude = longitude else {
return nil
}
return Location(latitude: latitude, longitude: longitude)
}
// Used to conform to the Codable protocol
private var latitude: Double?
private var longitude: Double?
}
struct Location {
var latitude: Double = 0.0
var longitude: Double = 0.0
}
这种架构有效,但在我看来它不是最好的或优雅的。你知道是否存在更好的方法吗?我是否应该使用 2 个不同的 json 模型,例如:
struct MyStruct1 : Codable {
var name: String
var manufacturer: String
var owner: String
}
struct MyStruct2 : Codable {
var name: String
var manufacturer: String
private var latitude: Double
private var longitude: Double
}
我是 REST API 客户端的新手,这种 JSON 似乎没有使用好的架构。