【问题标题】:How to map a JSON dictionary in ObjectMapper?如何在 ObjectMapper 中映射 JSON 字典?
【发布时间】:2016-11-15 08:05:18
【问题描述】:

我的 json 数据如下所示:

{
  "balance": {
    "pointsEarned": 3,
    "pointsAvailable": 3,
    "pointsOnHold": 0,
    "pointsConsumed": 0,
    "nextReward": 6
  }
}

我正在尝试映射“余额”,以便获得其他值:

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"]
}

每当我尝试访问“余额”时,我都会得到零。知道我可能做错了什么吗?

【问题讨论】:

    标签: ios swift alamofire objectmapper


    【解决方案1】:

    请注意,在您链接到的示例中,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"]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      相关资源
      最近更新 更多