Swift ObjectMapper: принудительное сопоставление номера JSON со строкой

#ios #json #swift #objectmapper

#iOS #json #swift #objectmapper

Вопрос:

Это поставило меня в тупик.. В настоящее время я использую Hearst-DD / ObjectMapper и задаюсь вопросом, как я могу сопоставить объект JSON с элементом number с элементом string. Объект JSON, который я получаю от вызова API, выглядит следующим образом и хранится в строковой переменной orderJson:

 {
    "PickOrder": {
        "OrderType": "SalesOrder",
        "OrderNumber": 50058,
        "OrderID": 52,
        "Customer": "Rusty Bike Shop"
    }
}
  

Я настроил следующий класс, который можно сопоставить с классом:

 class Order: Mappable {
    var OrderType:   String = ""
    var OrderNumber: String = ""
    var OrderID:     UInt = 0
    var Customer:    String = ""

    required init(_ map: Map) { }

    // Mappable
    func mapping(map: Map) {
        OrderType <- map["OrderType"]
        OrderNumber <- map["OrderNumber"]
        OrderID <- map["OrderID"]
        Customer <- map["Customer"]
    }
}
  

Во время выполнения, когда класс Order декодируется из JSON, каждый элемент класса декодируется и присваивается правильно; однако порядковый номер не отображается и по-прежнему является пустой строкой.

Я декодирую строку JSON следующим вызовом:

 let order = Mapper<Order>().map(String(orderJson))
  

Как я могу заставить mapper преобразовать элемент в строку, даже если это число в объекте JSON? Причина, по которой я спрашиваю, заключается в том, что API, с которым я работаю, иногда отправляет OrderNumber в виде строки, а иногда и в виде простого числа.

Большое спасибо за вашу помощь!

Комментарии:

1. Согласен, это может быть излишним для этого простого примера, однако у меня есть много объектов, которые необходимо сопоставить, и большинство из них сложны с несколькими вложенными объектами и массивами объектов. @vadian Вы знаете, как я могу решить поставленный мной вопрос?

2. В этом случае сопоставьте объект «вручную».