如何在 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"]
    }
}