详解Swift model 解析的两种方法
1. 常规解析方法
//懒加载声明一个LJNewsModel为数据的数组 lazy var ljArray : [LJNewsModel] = [LJNewsModel]()
//MARK:-- 数据获取和解析 extension NewsViewController{ func requestNetData(){ /* 打印json数据 */ LJDownLoadNetImage.request("GET", url: "http://c.m.163.com/nc/article/list/T1348647909107/0-20.html") { (data, respond, error) in 方法一:解析数据 let str = String(data:data!, encoding: String.Encoding.utf8)! print(str) let ljTempArray : NSArray = self.getDictionaryFromJSONString(jsonString: str).object(forKey: "T1348647909107") as! NSArray for m in 0 ..< ljTempArray.count { let dict:NSDictionary = ljTempArray[m] as! NSDictionary let model = LJNewsModel() model.imageUrl = dict.object(forKey: "imgsrc") as! String model.contentStr = dict.object(forKey: "title") as! String let count :Int = (dict.object(forKey: "replyCount") != nil) ? dict.object(forKey: "replyCount") as! Int : 0 model.replyCount = "\(count)" self.ljArray.add(model) } self.ljTablewView.reloadData() } } func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{ let jsonData:Data = jsonString.data(using: .utf8)! let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) if dict != nil { return dict as! NSDictionary } return NSDictionary() } }
model
import Foundation class LJNewsModel: NSObject { //MARK:- 定义属性 var imgsrc: String = "" ///< store user's name, optional var title: String = "" ///< store user's telephone number var replyCount: Int = 0 //方法二的model override init() { super.init() } func setModel(_ imageUrl: String ,_ contentStr: String, _ replyCount:Int) { self.imageUrl = imageUrl self.contentStr = contentStr self.replyCount = replyCount } }
2. 利用swift自有的函数进行解析-------推荐
//MARK:-- 数据获取和解析 extension NewsViewController{ func requestNetData(){ /* 打印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.方法一:解析数据 -- 推荐 let str = String(data:data!, encoding: String.Encoding.utf8)! guard let allResulrDict = self.getDictionaryFromJSONString(jsonString:str) as? [String : Any] else {return} guard let dataArray = allResulrDict["T1348647909107"] as? [[String :Any]] else {return} //print(dataArray) for dict in dataArray{ self.ljArray.append(LJNewsModel(dict)) } self.ljTablewView.reloadData() } } func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{ let jsonData:Data = jsonString.data(using: .utf8)! let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) if dict != nil { return dict as! NSDictionary } return NSDictionary() } }
import Foundation class LJNewsModel: NSObject { //MARK:- 定义属性 var imgsrc: String = "" ///< store user's name, optional var title: String = "" ///< store user's telephone number var replyCount: Int = 0 //方法一的model //MARK:- 自定义构造函数 init(_ dict : [String: Any]){ super.init() setValuesForKeys(dict) } override func setValue(_ value: Any?, forUndefinedKey key: String) { } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍详解Java解析XML的四种方法,包括了详解Java解析XML的四种方法的使用技巧和注意事项,需要的朋友参考一下 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document
本文向大家介绍详解SpringMVC解决跨域的两种方案,包括了详解SpringMVC解决跨域的两种方案的使用技巧和注意事项,需要的朋友参考一下 1. 什么是跨域 跨域,即跨站HTTP请求(Cross-site HTTP request),指发起请求的资源所在域不同于请求指向资源所在域的HTTP请求。 2. 跨域的应用情景 当使用前后端分离,后端主导的开发方式进行前后端协作开发时,常常有如下情景:
本文向大家介绍IOS中Json解析实例方法详解(四种方法),包括了IOS中Json解析实例方法详解(四种方法)的使用技巧和注意事项,需要的朋友参考一下 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接)。此网站不仅可以检测Json代码
本文向大家介绍Ajax中解析Json的两种方法对比分析,包括了Ajax中解析Json的两种方法对比分析的使用技巧和注意事项,需要的朋友参考一下 eval(); //此方法不推荐 JSON.parse(); //推荐方法 一、两种方法的区别 我们先初始化一个json格式的对象: 然后在控制台调用: console.log( jsonObj.name ); // 两种方法都可以正确输入 周星
本文向大家介绍详解Eclipse安装SVN插件的两种方法,包括了详解Eclipse安装SVN插件的两种方法的使用技巧和注意事项,需要的朋友参考一下 eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过输入SVN地址,直接下载安装到eclipse里 第一
本文向大家介绍详解Vue中使用Echarts的两种方式,包括了详解Vue中使用Echarts的两种方式的使用技巧和注意事项,需要的朋友参考一下 1. 直接引入echarts 先npm安装echarts 开发: main.js 2、使用vue-echarts 先npm安装vue-echarts 开发: main.js 总结 以上所述是小编给大家介绍的Vue中使用Echarts的两种方式,希望对大家有