Я использую Swift 2 с xcode 7.3.1.как конвертировать из json в объект моего класса и наоборот наоборот (с alamofire, SwiftyJSON)
У меня есть Alamofire 3.4 & SwiftyJSON в моем проекте. Я знаю, что могу преобразовать значение результата ответа от Alamofire к JSON
(структура определяется SwiftyJSON) типа, используя следующий код:
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
// now I get JSON type object, then what?
let json = JSON(value)
print("JSON: \(json)")
}
case .Failure(let error):
print(error)
}
}
Мой вопрос после того, как я получаю json
, как я могу преобразовать его в объект пользовательский класс?
Например, json
имеет следующую структуру:
{"name":
"Kate",
"age": 23,
"books":[{"id":1,"name":"book-1"},{"id":2,"name":"book-2"}]
}
У меня есть Swift класс:
class Student {
var name: String!
var age: Int!
var books:[Book]
...
}
class Book {
var id: Int!
var name: String!
...
}
Как я могу конвертировать json
в Student
объект и наоборот с Alamofire & SwiftyJSON ?
(Я новичок в iOS, я только что нашел людей в Интернете, предложил эти две библиотеки для обработки ответа JSON, поэтому я их использую. Пожалуйста, укажите мне, . заранее спасибо.)
SwiftyJSON, если возможно, преобразует HTTP-запрос в словарь-подобный объект, называемый 'JSON'. Вот и все. Ваша задача - сопоставить объект JSON с фактической моделью вашего приложения. Возможно, вы захотите использовать ['AlamofireObjectMapper'] (https://github.com/tristanhimmelman/AlamofireObjectMapper) над SwiftyJSON в этот момент, чтобы избавить себя от беспорядочного выполнения этого сопоставления. – ozgur
@ozgur, я проверил ссылку AlamofireObjectMapper, похоже, что мне не нужно использовать SwiftyJSON для преобразования строки в 'JSON'. Он непосредственно делает это: «Alamofire.request (.GET, URL) .responseObject {(response: Response)), вы видите, это позволяет мне иметь тип« Студент »и напрямую конвертироваться в мой объект. Правильно ли я понимаю? –
Но похоже, что AlamofireObjectMapper является односторонним сопоставлением, он не может преобразовать объект в json или я ошибаюсь? –