zoukankan      html  css  js  c++  java
  • Swift4 Json

    swift4 带来了原生的json解析,它们分别是 JSONDecoder和JSONEncoder,使用起来还算方便,不过为了更方便,我把它们又进行了简单的封装:

    class JsonHelper {
        static func ToJson<T:Codable>(_ obj:T) -> String {
            let encoder=JSONEncoder();
            let data=try! encoder.encode(obj)
            let str=String(data:data,encoding:.utf8)!
            return str
        }
        static func ToObject<T:Codable>(_ data:String) -> T{
            let decoder=JSONDecoder();
            let obj=try! decoder.decode(T.self, from: data.data(using: .utf8)!)
            return obj;
        }
    }

    我把它们封装成了泛型方法,这样用起来就相当方便了,提示下,要实现json序列化和反序列化,你必须在你的实体类继承Codable,如下:

    class Boy:Codable {
        init() {
            self.Name="XiaoMing"
            self.Age=10
            self.Sex=true
        }
        init(name:String,age:Int,sex:Bool) {
            self.Name=name
            self.Age=age
            self.Sex=sex
        }
        func ToString() -> String {
            return JsonHelper.ToJson(self)
        }
        
        var Name:String!
        var Age:Int!
        var Sex:Bool!
    }

    调用也很简单:

    var boy=Boy()
    var str=JsonHelper.ToJson(boy)
    var b:Boy=JsonHelper.ToObject(str)
    var name=(JsonHelper.ToObject(str) as Boy).Name

     顺便吐槽下swift的泛型居然不能用JsonHelper.ToObject<Boy>(str) 这样的方式!

     

    再加一个String类型的下标取字符

    extension String {
        subscript(index:Int) -> Character{
        get{
        return self[self.index(self.startIndex,offsetBy:index)]
        }
      }
    }

    写了这个扩展你就可以 str[index] 取字符了

  • 相关阅读:
    webpack打包加大就是为了加大文件允许体积,提升报错门栏
    webpack打包配置服务
    webpack 打包 js图片
    webpack 打包css 图片
    webpack打包多个html打包,分别引入不同的 多个 js 文件 流程
    webpack打包所有css打包压缩到一个js里面
    webapck 打包多个 js ,多个 html 同时打包流程
    webpack打包多个js 合并成默认 main.js文件步骤
    wbpack打包准备工作
    模拟攒机小程序 兼容提示 电源功率推荐 小白攒机神器
  • 原文地址:https://www.cnblogs.com/Yixin-ran/p/swiftjson.html
Copyright © 2011-2022 走看看