AlamofireObjectMapper,嵌套的 JSON 结构在序列化时总是 nil

Posted

技术标签:

【中文标题】AlamofireObjectMapper,嵌套的 JSON 结构在序列化时总是 nil【英文标题】:AlamofireObjectMapper, nested JSON structure is always nil when serialized 【发布时间】:2016-07-22 23:17:19 【问题描述】:

我正在使用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,即使端点返回了Points 的正确JSON 列表。我该怎么办?

【问题讨论】:

【参考方案1】:

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

 class Point: Mappable

 

呃!

【讨论】:

以上是关于AlamofireObjectMapper,嵌套的 JSON 结构在序列化时总是 nil的主要内容,如果未能解决你的问题,请参考以下文章

在 AlamofireObjectMapper 响应中映射 allHeaderFields

如何实例化映射类? (迅速 - alamofireObjectMapper)

使用 AlamofireObjectMapper 创建 func 返回一个对象

AlamofireObjectMapper / ObjectMapper 是不是支持结构类型映射

AlamofireObjectmapper 编码模型属性

使用 AlamofireObjectMapper 映射模型 - swift