详解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=""///
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!