如何使用objectmapper进行数组映射?

fro*_*ier 9 swift objectmapper

我有一个响应模型,如下所示:

class ResponseModel: Mappable {

    var data: T?
    var code: Int = 0

    required init?(map: Map) {}

    func mapping(map: Map) {
        data <- map["data"]
        code <- map["code"]
    }
}
Run Code Online (Sandbox Code Playgroud)

如果json-data不是数组,它可以工作:

{"code":0,"data":{"id":"2","name":"XXX"}}
Run Code Online (Sandbox Code Playgroud)

但如果它是一个数组,它不起作用

{"code":0,"data":[{"id":"2","name":"XXX"},{"id":"3","name":"YYY"}]}
Run Code Online (Sandbox Code Playgroud)

我的映射代码;

let apiResponse = Mapper<ResponseModel>().map(JSONObject: response.result.value)
Run Code Online (Sandbox Code Playgroud)

详情; 我使用这篇文章尝试了这段代码:http://oramind.com/rest-client-in-swift-with-promises/

Moh*_*hyG 11

你需要使用mapArray方法而不是map:

let apiResponse = Mapper<ResponseModel>().mapArray(JSONObject: response.result.value)
Run Code Online (Sandbox Code Playgroud)


Ale*_*x S 3

您需要将数据声明更改为数组,因为 JSON 中就是这样的:

var data: [T]? 
Run Code Online (Sandbox Code Playgroud)

  • 此外,即使只有一个元素,API 也应该真正将对象包装在数组对象中。 (2认同)