swift (runtime)自定义类转化成字典,Data,JSON字符串
来源:互联网 发布:寒战2 知乎 编辑:程序博客网 时间:2024/06/11 14:45
swift (runtime)自定义类转化成字典,Data,JSON字符串
实现部分class ObjectPrint: NSObject { class func getJSON(obj:AnyObject,options:JSONSerialization.WritingOptions)->Data{ var data = Data() do{ data = try JSONSerialization.data(withJSONObject: self.getObjectDictionary(obj: obj), options: options) } catch{ } return data } class func getObjectDictionary(obj:AnyObject)->NSMutableDictionary{ let dic = NSMutableDictionary() var propsCount:UInt32 = 0 let props = class_copyPropertyList(obj.classForCoder, &propsCount) for i in 0..<propsCount { let prop = props?[Int(i)] let propName = String.init(utf8String: property_getName(prop)) var value = obj.value(forKey: propName!) if value == nil { value = NSNull() }else{ value = self.getObjectInternal(obj: value as AnyObject) } dic.setValue(value, forKey: propName!) } return dic } class func getObjectInternal(obj:AnyObject)->AnyObject{ if obj.isKind(of: NSString.self) || obj.isKind(of: NSNumber.self) || obj.isKind(of: NSNull.self){ return obj } if obj.isKind(of: NSArray.self) { let arr = NSArray.init(array: obj as! [Any]) let objArr = NSMutableArray.init(capacity: arr.count) for i in 0..<arr.count { objArr[i] = self.getObjectInternal(obj: arr[i] as AnyObject) } return objArr } if obj.isKind(of: NSDictionary.self) { let dic = NSMutableDictionary.init(capacity: (obj as! NSDictionary).count) for key in (obj as! NSDictionary).allKeys { dic.setObject(self.getObjectInternal(obj: (obj as! NSDictionary).value(forKey: key as! String) as AnyObject), forKey: key as! NSString) } return dic } return self.getObjectDictionary(obj:obj) }}自定义类class Person: NSObject { var name:String? var age:NSNumber? var children:NSArray? var book:NSDictionary?}class Child: NSObject { var name:NSString? var age:NSNumber?}调用let person = Person() person.name = "张三" person.age = 40 person.book = ["first":"we","second":"are"] let childOne = Child() childOne.name = "ddf" childOne.age = 2 let childTwo = Child() childTwo.name = "dfgd" childTwo.age = 4 person.children = NSArray(arrayLiteral: childOne,childTwo) //自定义类转化成Data或json字符串 let jsonData = ObjectPrint.getJSON(obj: person, options: JSONSerialization.WritingOptions.prettyPrinted) let jsonText = NSString.init(data: jsonData, encoding: String.Encoding.utf8.rawValue) print(jsonText!) //自定义类转化成字典 let dic = ObjectPrint.getObjectDictionary(obj: person) print(dic)
阅读全文
0 0
- swift (runtime)自定义类转化成字典,Data,JSON字符串
- swift 将json字符串 转换成 字典
- Swift-字典数组转化成JSON -本人亲测
- 字典转化为 json 字符串
- JSON字符串转化为字典
- 字典转化成Json
- object转化成json,json格式字符串转字典,数组或字典转为json串
- iOS对象(字典或数组)转化为JSon字符串
- JSON串(字典、数组)转化为字符串
- iOS对象(字典或数组)转化为JSon字符串
- Python处理json字符串转化为字典
- 数组、字典转化为json字符串
- Python处理json字符串转化为字典
- Python处理json字符串转化为字典
- 数组/字典转化成JSON格式
- Json字符串与字典对象的相互转化
- iOS-OC-把JSON字符串转化为字典
- Python 字符串,字典,数据库,列表和json互相转化
- JDBC连接数据库经验技巧
- js中‘!!’的本质
- 顺手的Hscan弱口令扫描
- Struts2漏洞2.0.xx或2.3.28.1升级为Struts-2.5.12
- HDU 1402 A * B Problem Plus (快速傅里叶变换实现大数乘法)
- swift (runtime)自定义类转化成字典,Data,JSON字符串
- CSS中清除浮动五大的方法介绍
- log4j和web.xml配置webAppRootKey 的问题
- 关于注解反射那些事
- 剑指Offer面试题49字符串转整数,面试题50二叉树两个结点的最低公共祖先
- poj 2762 Going from u to v or from v to u? 单向连通图判定
- smb安装脚本解释
- 求数组中的最大值和下标
- js+插件实现代码复制及动态生成二维码扫描、分享到朋友圈QQ空间功能