'How to binding Json Value into Swifty model class

Based on the response, I constructed Dictionary -> [String:Any]

Convert Dictionary to Json by using below extension

extension [String: Any] {
    var jsonData: Data? {
        return try? JSONSerialization.data(withJSONObject: self, options: [.prettyPrinted])
    }
    func toStringJSON() -> String? {
        if let jsonData = jsonData {
            let jsonString = String(data: jsonData, encoding: .utf8)
            return jsonString
        }
        return nil
    }
}

func prepareJsonString(dict: [String:Any]) ->String{
    let jsonString = dict.toStringJSON()
}

Created The json value.

 {
    "data": [
      {
        "data": [
          {
            "check_in": "08:00 AM",
            "check_out": "09:00 PM",
            "breaks": [
              {
                "type": "Lunch",
                "break_in": "01:00 AM",
                "break_out": "02:00 AM"
              },
              {
                "type": "Recess",
                "break_in": "03:30 PM",
                "break_out": "04:30 PM"
              }
            ]
          }
        ]
      }
    ]
  }

Created the model Class

struct SchoolBreaks {
    let data: [Data]?
    init(_ json: JSON) {
        data = json["data"].arrayValue.map { Data($0) }
    }
}

struct Data {

    let data: [Data]?

    init(_ json: JSON) {
        data = json["data"].arrayValue.map { Data($0) }
    }
}
struct Data {

    let data: [Data]?

    init(_ json: JSON) {
        data = json["data"].arrayValue.map { Data($0) }
    }
}

struct Data {

    let checkIn: String?
    let checkOut: String?
    let breaks: [Breaks]?

    init(_ json: JSON) {
        checkIn = json["check_in"].stringValue
        checkOut = json["check_out"].stringValue
        breaks = json["breaks"].arrayValue.map { Breaks($0) }
    }
}

struct Breaks {

    let type: String?
    let breakIn: String?
    let breakOut: String?

    init(_ json: JSON) {
        type = json["type"].stringValue
        breakIn = json["break_in"].stringValue
        breakOut = json["break_out"].stringValue
    }
}

When I am trying to bind resultant jsonValue into ModelClass -> SchoolBreak

its showns Empty

     let jsonValue = prepareJsonString(dict: preparedDictionary)
    let schoolBreak = SchoolBreak init(JSON(rawValue: jsonValue) ?? "")
    print(schoolBreak)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source