swift json的序列化和反序列化
来源:互联网 发布:cass软件下载 编辑:程序博客网 时间:2024/06/05 15:38
protocol yson{ func dicnarySerializer() -> AnyObject? func deserializer(jsonstring:String?) -> Bool func serialization() -> String? func deserialization(string:String) -> Bool func deserialization(json:JSON) -> Bool}extension yson{ func dicnarySerializer() -> AnyObject?{ let mirror = Mirror(reflecting: self) if mirror.children.count > 0 { var result: [String:AnyObject] = [:] for case let (label?, value) in mirror.children { if let jsonValue = value as? yson { result[label] = jsonValue.dicnarySerializer() } } return result } return self as? AnyObject } func serialization() -> String?{ let json_object = self.dicnarySerializer() let data : NSData! = try? NSJSONSerialization.dataWithJSONObject(json_object!, options: []) let str = NSString(data:data, encoding: NSUTF8StringEncoding) return str as String? } func deserialization(string:String) -> Bool{ if let json :JSON = string.fileStringToJson(){ return deserialization(json) } return false } func deserialization(json:JSON)-> Bool{ let mirror = Mirror(reflecting: self) if mirror.children.count > 0 { for case let (label?, _) in mirror.children { if(!self.deserialization(json[label])){ return false } } }else{//base type if(!self.deserializer(json.string)){ return false } } return true } func deserializer(jsonstring:String?) -> Bool{ return false }}extension Optional:yson{ func dicnarySerializer() -> AnyObject? { if let obj = self{ if let value = obj as? yson{ return value.dicnarySerializer() } } return nil }}extension NSDate :yson{ func dicnarySerializer() -> AnyObject? { let formatter = NSDateFormatter() formatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss" let str = formatter.stringFromDate(self) return str }}extension String: yson { mutating func deserializer(string:String){ self = string }}extension Int64: yson { mutating func deserializer(string:String){ if let int64 = string.toInt64(){ self = int64 } }}extension Int: yson { mutating func deserializer(string:String){ if let inttt:Int = (string as NSString).integerValue{ self = inttt } }}extension Bool: yson { mutating func deserializer(string:String){ if let inttt:Bool = (string as NSString).boolValue{ self = inttt } }}extension Dictionary: yson {}extension Array: yson { }extension Set:yson { }
还有一点东西没写完,权作笔记
参考:http://www.hangge.com/blog/cache/detail_983.html
0 0
- swift json的序列化和反序列化
- Json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- json序列化和反序列化
- Json序列化和反序列化
- json序列化和反序列化
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- 微服务架构的优势与不足
- 排序
- C++ - 计蒜客 - 迷宫中的英雄(bfs)
- MySQL分库分表总结
- CMake学习笔记(4)——使用外部共享库和头文件
- swift json的序列化和反序列化
- 隐马尔可夫模型(六)——隐马尔可夫模型的评估问题(前向后向相结合算法)
- sklearn 中 make_blobs模块使用
- 系统限流实践 - 理论篇
- 静态局部变量
- Java的ClassLoader加载机制
- Android Studio获取SHA1
- kettle源码部署
- js去除数组重复元素