详解Swift model 解析的两种方法
详解Swiftmodel解析的两种方法
1.常规解析方法
//懒加载声明一个LJNewsModel为数据的数组 lazyvarljArray:[LJNewsModel]=[LJNewsModel]()
//MARK:--数据获取和解析 extensionNewsViewController{ funcrequestNetData(){ /* 打印json数据 */ LJDownLoadNetImage.request("GET",url:"http://c.m.163.com/nc/article/list/T1348647909107/0-20.html"){(data,respond,error)in 方法一:解析数据 letstr=String(data:data!,encoding:String.Encoding.utf8)! print(str) letljTempArray:NSArray=self.getDictionaryFromJSONString(jsonString:str).object(forKey:"T1348647909107")as!NSArray formin0..NSDictionary{ letjsonData:Data=jsonString.data(using:.utf8)! letdict=try?JSONSerialization.jsonObject(with:jsonData,options:.mutableContainers) ifdict!=nil{ returndictas!NSDictionary } returnNSDictionary() } }
model
importFoundation classLJNewsModel:NSObject{ //MARK:-定义属性 varimgsrc:String=""///2.利用swift自有的函数进行解析-------推荐
//MARK:--数据获取和解析 extensionNewsViewController{ funcrequestNetData(){ /* 打印json数据 */ LJDownLoadNetImage.request("GET",url:"http://c.m.163.com/nc/article/list/T1348647909107/0-20.html"){(data,respond,error)in //as?[[String:Any]]转化为以字典为元素的数组 //as?[String:Any]转化为字典 //1.方法一:解析数据--推荐 letstr=String(data:data!,encoding:String.Encoding.utf8)! guardletallResulrDict=self.getDictionaryFromJSONString(jsonString:str)as?[String:Any]else{return} guardletdataArray=allResulrDict["T1348647909107"]as?[[String:Any]]else{return} //print(dataArray) fordictindataArray{ self.ljArray.append(LJNewsModel(dict)) } self.ljTablewView.reloadData() } } funcgetDictionaryFromJSONString(jsonString:String)->NSDictionary{ letjsonData:Data=jsonString.data(using:.utf8)! letdict=try?JSONSerialization.jsonObject(with:jsonData,options:.mutableContainers) ifdict!=nil{ returndictas!NSDictionary } returnNSDictionary() } }importFoundation classLJNewsModel:NSObject{ //MARK:-定义属性 varimgsrc:String=""///如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!