AlamofireObjectMapper,嵌套的JSON结构在序列化时始终为nil

时间:2016-07-22 23:17:20

标签: json swift alamofire objectmapper

我正在使用AlamofireObjectMapper来序列化来自服务器的JSON响应。目前,使用get方法,我有以下结构化JSON响应:

 {
   data : {
      [
        { ID: 4, 
           ...
          PointList : {
             [
               {

               }, 
               {}
             ]
          }

        },
        {
          ...
        }

      ]
   }
 }

我定义的最外层对象是一个名为class的自定义BrowsableObjectList,我在其中定义了将json反序列化为对象的映射

class BrowsableObjectList : Mappable {
  var data : [BrowsableObject]?

  required init?(_ map: Map){
  }

  func mapping(map: Map) {
   data <- map["data"]
  } 
}

同样,我将BrowsableObject定义为

class BrowsableChronicle : Mappable {
  var pointList : [Point]?

  required init?(_ map: Map){}

  func mapping(map: Map) {
   pointList <- map["PointList"]
  }
}

其中引用[Point]的列表,其中Point是定义为另一个可映射对象的自定义类。

class Point{
  var axisX : Int?
  var axisY : Int?

  required init?(_ map: Map){

  }

  func mapping(map: Map) {
   axisX <- map["AxisX"]
   axisY <- map["AxisY"]
  }
}

问题在于我在服务器上调用端点,我在浏览器中检查了PointList定义的值,当我访问它时始终为nil

这是我称之为端点的地方:

func getChronicleEntries(pageIndex: Int, pageSize : Int,  completionHandler: ([BrowsableChronicle]?, NSError?) -> ()){
print("page index is : \(pageIndex)")
Alamofire.request(.GET, "http://myendpoint.com/getThing?", parameters: ["pageindex": "\(pageIndex)", "pagesize": "\(pageSize)"]).responseObject { (response: Response<BrowsableObjectList, NSError>) in
    if let userResponse = response.result.value {
      if let data = userResponse.data {
        let browsableObjectArray : [BrowsableObject] = data
        completionHandler(browsableObjectArray, nil)
      }
    } else {
      Logger.logSomething(response.result.error!.localizedDescription)
      completionHandler(nil, response.result.error)
    }
}
}

问题是BrowsableObject.pointList总是nil,即使端点返回Point s的正确JSON列表。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我没有将最里面的类设置为Mappable

 class Point: Mappable{

 }

杜!