使用Rx编程将JSON响应映射到对象Moya

时间:2017-07-01 15:16:49

标签: json swift modelmapper moya

我正在尝试使用ModelMapper库的mapObject函数,如下所示:

return provider.request(API.userInfo(userId: API.userId))
            .mapObject(type: UserTest.self, keyPath: "user")

这个Json:

{
    "success": true,
    "user": {
        "_id": "HJzCZaXEW",
        "mail": "Valentin",
        "__v": 0,
        "bikes": [
            "S1rjHamNZ",
            "HkxhHpXEZ"
        ],
        "updated": "2017-06-30T12:19:22.016Z",
        "created": "2017-06-30T12:19:22.015Z"
    }
}

我试图用这种方式看出错误是什么:

API.getUserInfo()
        .subscribe {event in
            switch event {
            case .next(let response):
                print(response)
            case .error(let error):
                print("error")
                print(error)
            default:
                print("default")
            }
        }

我在我的控制台中得到了这个:

error
jsonMapping(Status Code: 200, Data Length: 177)

这是我的映射结构:

import Mapper

struct UserTest: Mappable {
    var name: String
    var lastname: String
    var mail: String
    var bikes: [String]

    init(map: Mapper) throws {
        try name = map.from("name")
        try lastname = map.from("lastname")
        try mail = map.from("mail")
        try bikes = map.from("bikes")
    }
}

我也尝试过pod更新但没有任何改变。 我真的不明白为什么它不起作用。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题出在这些方面

try name = map.from("name")
try lastname = map.from("lastname")

你的json数据有这两个键," name"和"姓氏"。尝试删除这两行或将两者都作为"可选"如果数据可能为空或存在

lastname = map.optionalFrom("lastname")