Данные ответа JSON в быстрые объекты [ObjectMapper]

Можете ли вы, ребята, помочь мне создать быстрые объекты с использованием ObjectMapper для следующих данных JSON?

[{
    "location": "Toronto, Canada",    
    "three_day_forecast": [
        { 
            "conditions": "Partly cloudy",
            "day" : "Monday",
            "temperature": 20 
        },
        { 
            "conditions": "Showers",
            "day" : "Tuesday",
            "temperature": 22 
        },
        { 
            "conditions": "Sunny",
            "day" : "Wednesday",
            "temperature": 28 
        }
    ]
}
]

person Parion    schedule 19.06.2016    source источник
comment
сгенерированная модель   -  person R Menke    schedule 19.06.2016
comment
Структуры @appzYourLife не допускают атрибутов типа Self. Таким образом, классы лучше представляют JSON, где это может произойти. Неудачный init трудно обобщить. Некоторым нужны только объекты с полными данными, другие не против неполных объектов.   -  person R Menke    schedule 19.06.2016
comment
Вам помог этот код?   -  person R Menke    schedule 19.06.2016
comment
К чему именно вы хотите получить доступ в этом JSON?   -  person Dershowitz123    schedule 19.06.2016
comment
Спасибо @RMenke, это помогло мне разобраться в моей ошибке.   -  person Parion    schedule 20.06.2016


Ответы (2)


Вы можете сократить объем шаблонного кода, используя BetterMappable, написанный поверх ObjectMapper с использованием PropertyWrappers. Вы должны быть на Swift 5.1, чтобы использовать его.

person Srikanth    schedule 28.02.2020
comment
Вау, я нашел такое решение, чтобы уменьшить количество шаблонного кода. Спасибо @Srikanth - person Sridhara Shetty; 28.02.2020

Если вы используете ObjectMapper:

import ObjectMapper

struct WeatherForecast: Mappable {
    var location = ""
    var threeDayForecast = [DailyForecast]()

    init?(_ map: Map) {
        // Validate your JSON here: check for required properties, etc
    }

    mutating func mapping(map: Map) {
        location            <- map["location"]
        threeDayForecast    <- map["three_day_forecast"]
    }
}

struct DailyForecast: Mappable {
    var conditions = ""
    var day = ""
    var temperature = 0

    init?(_ map: Map) {
        // Validate your JSON here: check for required properties, etc
    }

    mutating func mapping(map: Map) {
        conditions      <- map["conditions"]
        day             <- map["day"]
        temperature     <- map["temperature"]
    }
}

Применение:

// data is whatever you get back from the web request
let json = try! NSJSONSerialization.JSONObjectWithData(data, options: [])
let forecasts = Mapper<WeatherForecast>().mapArray(json)
person Code Different    schedule 20.06.2016