如何使用Alamofire + ObjectMapper映射JSON响应的多维数组?

时间:2017-10-17 09:53:33

标签: json swift multidimensional-array alamofire objectmapper

我正在尝试使用Alamofire + ObjectMapper启动我的项目。

我可以使用对象数组(带键)进行简单映射。

但是,这是我必须处理的以下类型的JSON格式,它有一些问题:

1:它是非常嵌套的数组(3维)

2:每个级别的数组都没有键

所以我无法创建像JSON表示的对象。请帮忙!!

我的JSON词典:

{
  "structure_model": [
        [
            [
                {
                    "test": "test"
                }
            ]
        ]
    ]
}

我的模特:

class Component: Mappable, Codable {
    var test : String = ""
    required init?(map: Map) {

    }

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


}

class StructureModel: Mappable, Codable {

    var structureModels :    [Array<Array<Component>>]?

    required init?(map: Map){

    }

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

我做了什么:

Alamofire.request(API, method: .post, parameters: parameters, encoding: JSONEncoding.default).validate().responseObject { (response: DataResponse<StructureModel>) in etc... }

我期待的是:

structureModels = [ 
  [
    [Component, Component, ...], 
    [Component, Component, ...],
    ...
  ] ,
  [ 
    [Component, Component, ...], 
    [Component, Component, ...], 
    ...
  ] ,
  ...]

我得到了什么:

structureModels = nil

1 个答案:

答案 0 :(得分:0)

如果JSON的结构是数组数组,则可以使用:

let responseArrayOfArrays = Mapper <“ YourModel”>()。mapArrayOfArrays(JSONObject:response?.rawValue)