• 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] 取字符了

  • 相关阅读:
    JavaScript中的方法和属性
    vue的计算属性与方法的不同
    vue 中使用 watch 出现了如下的报错
    vue中methods函数调用methods函数写法
    ES2015箭头函数与普通函数对比理解
    leetcode Single Number python
    leetcode first bad version python
    leetcode Search for a Range python
    leetcode Longest Valid Parentheses python
    python dict traversal
  • 原文地址:https://www.cnblogs.com/Yixin-ran/p/swiftjson.html
Copyright © 2020-2023  润新知