我正在使用 AlamofireObjectMapper
序列化来自服务器的 JSON 响应。目前,通过 get 方法,我有以下结构化 JSON 响应:
{
data : {
[
{ ID: 4,
...
PointList : {
[
{
},
{}
]
}
},
{
...
}
]
}
}
我将最外层的对象定义为一个名为 BrowsableObjectList
的自定义 class
,其中我定义了将 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
JSON 列表。我该怎么办?
最佳答案
我没有将最里面的类设置为Mappable
。
class Point: Mappable{
}
呃!
关于json - AlamofireObjectMapper,嵌套的 JSON 结构在序列化时始终为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536507/