2016-02-25 95 views
3

这在JSON了如何使用对象映射器

[{ “START_HOUR” 解析以下JSON: “8点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) 

但它解析时发现无效值。

回答

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)!); 
+0

解析,但我不想做这个字典,json有什么问题吗? –

+0

我也可以这样做 let user = Mapper ()。map(response.result.value?.objectAtIndex(0)) –

+0

您可以给response.result.value吗? –

1

按用户JSON'call_duration'也是字符串类型。改线

var callDuration : Int? 

到:

var callDuration : String? 
+0

我试过,但没有工作 –

0

你也可以将它们包装都在一个“卫兵”语句这样,如果你得到一个零,你可以在0传递给代表一个项目是空的或没有长度。

+0

问题是不是零,问题是关于方法来分析,我能够呀,这代码工作 与nsjsonserialization –

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" }