如何在 ObjectMapper 中映射 JSON 字典?
How to map a JSON dictionary in ObjectMapper?
我有 json 如下所示的数据:
{
"balance": {
"pointsEarned": 3,
"pointsAvailable": 3,
"pointsOnHold": 0,
"pointsConsumed": 0,
"nextReward": 6
}
}
我正在尝试映射 "balance" 以便我可以获得其他值:
class AccountBalance: Mappable {
var balance: Dictionary<String, AnyObject>?
var pointsAvailable: Int?
required init?(_ map: Map) {
}
func mapping(map: Map) {
balance <- map["balance.value"]
pointsAvailable <- map ["pointsAvailable"]
}
}
根据 objectMapper github page 它是这样完成的:
ObjectMapper 支持键内的点符号,以便轻松映射嵌套对象。给定以下 JSON 字符串:
"distance" : {
"text" : "102 ft",
"value" : 31
}
您可以按如下方式访问嵌套对象:
func mapping(map: Map) {
distance <- map["distance.value"]
}
每当我尝试访问 "balance" 时,我都会得到一个 nil。知道我可能做错了什么吗?
请注意,在您链接的示例中,distance
有一个 value
属性,可以通过 map["distance.value"]
:
访问
"distance" : {
"text" : "102 ft",
"value" : 31
}
在您的示例中,balance
没有名为 value
的子字段,因此 map["balance.value"]
将失败。
使用map["balance"]
将balance
变量映射到字典:
class AccountBalance: Mappable {
var balance: Dictionary<String, AnyObject>?
var pointsAvailable: Int?
required init?(_ map: Map) {
}
func mapping(map: Map) {
balance <- map["balance"]
pointsAvailable <- map ["pointsAvailable"]
}
}
我有 json 如下所示的数据:
{
"balance": {
"pointsEarned": 3,
"pointsAvailable": 3,
"pointsOnHold": 0,
"pointsConsumed": 0,
"nextReward": 6
}
}
我正在尝试映射 "balance" 以便我可以获得其他值:
class AccountBalance: Mappable {
var balance: Dictionary<String, AnyObject>?
var pointsAvailable: Int?
required init?(_ map: Map) {
}
func mapping(map: Map) {
balance <- map["balance.value"]
pointsAvailable <- map ["pointsAvailable"]
}
}
根据 objectMapper github page 它是这样完成的:
ObjectMapper 支持键内的点符号,以便轻松映射嵌套对象。给定以下 JSON 字符串:
"distance" : {
"text" : "102 ft",
"value" : 31
}
您可以按如下方式访问嵌套对象:
func mapping(map: Map) {
distance <- map["distance.value"]
}
每当我尝试访问 "balance" 时,我都会得到一个 nil。知道我可能做错了什么吗?
请注意,在您链接的示例中,distance
有一个 value
属性,可以通过 map["distance.value"]
:
"distance" : {
"text" : "102 ft",
"value" : 31
}
在您的示例中,balance
没有名为 value
的子字段,因此 map["balance.value"]
将失败。
使用map["balance"]
将balance
变量映射到字典:
class AccountBalance: Mappable {
var balance: Dictionary<String, AnyObject>?
var pointsAvailable: Int?
required init?(_ map: Map) {
}
func mapping(map: Map) {
balance <- map["balance"]
pointsAvailable <- map ["pointsAvailable"]
}
}