swift——原生的Data與Dictionary互轉(zhuǎn)的方法,及Model自定義

先貼上互轉(zhuǎn)方法

這是Dictionary轉(zhuǎn)Data 的方法

源碼:

func jsonToData(jsonDic:Dictionary<String, Any>) -> Data? {

????if (!JSONSerialization.isValidJSONObject(jsonDic)) {

????????print("is not a valid json object")

????????return nil

}

????//利用自帶的json庫轉(zhuǎn)換成Data

????//如果設(shè)置options為JSONSerialization.WritingOptions.prettyPrinted,則打印格式更好閱讀

????let data = try? JSONSerialization.data(withJSONObject: jsonDic, options: [])

????//Data轉(zhuǎn)換成String打印輸出

????let str = String(data:data!, encoding: String.Encoding.utf8)

????//輸出json字符串

????print("Json Str:\(str!)")

????return data

}



這是Data轉(zhuǎn)Dictionary, 上面是首先判斷能否轉(zhuǎn)換成功,下面用的do catch。 ??

源碼:

func dataToDictionary(data:Data) ->Dictionary<String, Any>?{

????do{

????????let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)

????????let dic = json as! Dictionary<String, Any>

????????return dic

????}catch _ {

????????print("失敗")

????????return nil

????}

}


首先因?yàn)槭亲约簩懙腄emo,所以先定義Dictionary,轉(zhuǎn)為Data,然后再轉(zhuǎn)成Dictionary。


這樣的最后得到的Dictionary就是一開始你定義的。

然后關(guān)于Model,直接上圖


定義好你需要的變量,也就是成員,然后將解析出來的Dictionary的key定義為一個數(shù)組(例子中就是我定義的Dictionary的key,實(shí)際項(xiàng)目中就是你得到的返回值對應(yīng)的key),再將你與之相對應(yīng)的變量定義為一個數(shù)組,順序要對應(yīng)上喲。然后遍歷數(shù)組并賦值

源碼:

class testModel:NSObject{

????var name:String!

????var age:String!

????var sex:String!

????convenience init(dic:Dictionary<String, Any>){

????????self.init()????

????????let arr1 = ["姓名","年齡","性別"]

????????let arr2 = ["name","age","sex"]

????????for (index, value) in arr1.enumerated() {

????????????self.setValue(dic[value], forKey: arr2[index])

????????}

? ? }

}


下面是使用方法

調(diào)用非常簡單,傳入Dictionary就搞定了所有的賦值。這樣子的Model同樣適用于第三方庫解析出來的數(shù)據(jù),例如SwiftJSON,區(qū)別只是傳入的字典類型改為JSON。



轉(zhuǎn)載請注明出處,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容