#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. В этом случае сопоставьте объект «вручную».