【发布时间】: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 列表。我该怎么办?
【问题讨论】:
标签: json swift alamofire objectmapper