这是JSON
[{ " start_hour":" 08:00:00", " end_hour":" 10:00:00", " call_duration":" 30" }]
我尝试解析如下
class DoctorAvailablityResponseData: Mappable {
var startDateHour : String?
var callDuration : Int?
var endDateHour : String?
required init?(_ map: Map){
}
func mapping(map: Map) {
callDuration <- map["call_duration"]
endDateHour <- map["end_hour"]
startDateHour <- map["start_hour"]
}
}
和
let user = Mapper<ResponseDoctorAvailablity>().map(response.result.value)
但是在解析时它会中断,找到零值。
答案 0 :(得分:3)
您的数据类型错误。你需要提供“DoctorAvailablityResponseData”,但你给了ResponseDoctorAvailablity进行映射。
let user = Mapper<ResponseDoctorAvailablity>().map(response.result.value)
实施例
class Doctor: Mappable {
var startDateHour : String?
var callDuration : String?
var endDateHour : String?
required init?(_ map: Map){
}
func mapping(map: Map) {
callDuration <- map["call_duration"]
endDateHour <- map["end_hour"]
startDateHour <- map["start_hour"]
}
}
// Sample Response
let response : NSMutableDictionary = NSMutableDictionary.init(object: "08:00:00", forKey: "start_hour");
response.setValue("10:00:00", forKey: "end_hour");
response.setValue("30", forKey: "call_duration");
// Convert response result to dictionary type. It is very easy.
let userdic = Mapper<Doctor>().map(response) // Map to correct datatype.
NSLog((userdic?.callDuration)!);
// If you result is nested object. you will easily get zero index position object and parse it.
let nestedObjectArray :NSArray = NSArray.init(array: [response]);
let userArray = Mapper<Doctor>().map(nestedObjectArray[0])
NSLog((userArray?.callDuration)!);
答案 1 :(得分:1)
根据用户JSON&#39; call_duration&#39;也是字符串类型。更改行
var callDuration : String?
为:
{{1}}
答案 2 :(得分:0)
你也可以将它们全部包装在一个'guard'语句中,如果你得到一个nil,你可以传入0代表一个项目是空的或没有长度。
答案 3 :(得分:0)
您的json数据看起来像一个数组,其中第一个元素是字典。
[{ "start_hour": "08:00:00", "end_hour": "10:00:00", "call_duration": "30" }]
。
除了将call_duration类型更改为String?您是否尝试过确保实际上是将字典而不是数组传递给地图功能?尝试通过这个,看看它是否有效。
{ "start_hour": "08:00:00", "end_hour": "10:00:00", "call_duration": "30" }