как разобрать JSON, используя инструмент отображения объектов

Это 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) 

Но он ломается при разборе, находит нулевое значение.

4 Solutions collect form web for “как разобрать JSON, используя инструмент отображения объектов”

Тип данных неверен. Вам нужно дать «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)!); 

По словам пользователя JSON 'call_duration' также является строковым типом. Изменить строку

 var callDuration : Int? 

чтобы:

 var callDuration : String? 

Вы могли бы также обернуть их все в инструкции «guard» таким образом, если вы получите нуль, который вы можете передать в 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" }

  • Как добавить действие к кнопке UIAlertView с помощью Swift iOS
  • почему invalidateLayout не запускает sizeForItemAtIndexPath в UICollectionView? (код прилагается)
  • Как получить массив объектов JSON из объекта NSData
  • Безопасность приложений для транспорта Xcode 7 beta 6
  • Метод Objective-C конфликтует с дополнительным требованием метода Swift
  • быстрый компилятор показывает ошибку ожидаемого объявления?
  • Использование NSKeyValueObservation для наблюдения за значением в UserDefaults
  • Попытка представить UINavigationController, чья точка зрения
  • Невозможно развернуть Необязательно на popViewControllerAnimated
  • быстрый: асинхронная задача + завершение
  • использовать контроллер таблицы с одним столом для каждой ячейки ячейки.
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.