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
,即使端点返回了Point
s 的正确JSON 列表。我该怎么办?
【问题讨论】:
【参考方案1】:我没有将最里面的类设置为Mappable
。
class Point: Mappable
呃!
【讨论】:
以上是关于AlamofireObjectMapper,嵌套的 JSON 结构在序列化时总是 nil的主要内容,如果未能解决你的问题,请参考以下文章
在 AlamofireObjectMapper 响应中映射 allHeaderFields
如何实例化映射类? (迅速 - alamofireObjectMapper)
使用 AlamofireObjectMapper 创建 func 返回一个对象