swfit json解析与闭包回调

1.只包含一个模型类的字典解析

func JsonNormalModel() -> () {

  let jsonDic = ["userName":"beer", "age":"100","userEmail":"[email protected]"] as [String : Any]

  let jsonData = try! JSONSerialization.data(withJSONObject: jsonDic, options: .prettyPrinted)

  let decode = JSONDecoder()

 if let user = try? decode.decode(Usre.self, from: jsonData){  print(user.userEmail)}

}

2.模型数组的字典解析

func JsonArrModel(complition:@escaping (_ list:[Usre])->()) -> () { 

 let mainDic = ["name":"软件部","id":"888","member":[["userName":"beer0", "age":"101","userEmail":"[email protected]"],["userName":"beer1", "age":"103","userEmail":"[email protected]"]]] as [String : Any]

let mainData = try! JSONSerialization.data(withJSONObject: mainDic, options: .prettyPrinted)

let decode1 = JSONDecoder()

if let group = try? decode1.decode(Department.self, from: mainData)

 {            var arrayM = [Usre]()

                for (indexs,item) in group.member.enumerated() {

                print("索引:\(indexs)  值:\(item)")

                arrayM.append(item)

            }

          complition(arrayM)

} }

3. viewDidLoad回调函数

var listArr = [Usre]()

override func viewDidLoad() {

        super.viewDidLoad()

        JsonArrModel { (List) in

            self.listArr += List

}

let user = self.listArr[0]

print("\(user.userName) \(user.userEmail) \(user.age)")

}

4.模型类

class Usre: Codable { 

   var userName:String

    var age:String

    var userEmail:String

    init(userName:String,age:String,userEmail:String) {

         self.userEmail = userEmail

        self.userName = userName

        self.age = age}

}

class Department: Codable {

    var name: String

    var id: String

    var member: [Usre

      init(name: String, id: String ,member:[Usre]) {

      self.name = name;

        self.id = id;

        self.member = member;

    }

}

你可能感兴趣的:(swfit json解析与闭包回调)