Swift開發中 JSON對象/JSON字符串/Data的互轉


本文將介紹Swift開發中常用的轉換(JSON對象/JSON字符串/Data之間的互相轉換)

 

#pragma mark - JSON(對象)----->JSON字符串

 

1、原生方法

 

//JSON--->data--->JSON字符串
let data = try? JSONSerialization.data(withJSONObject: json, options: [])  
let jsonString = String(data: data, encoding: String.Encoding.utf8)

  

#pragma mark - JSON字符串----->JSON(對象)

 

1、原生方法

 

//JSON字符串-->data-->JSON對象
let jsonString = "{\"name\":\"zhangsan\",\"age\": 18}"
let jsonData = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
guard let json = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) else {
     return
}

 

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

 

//JSON字符串-->data-->JSON對象(測試發現直接使用JSON(jsonString).arrayValue是轉化不出來的)
let data = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
let json = JSON(data).arrayValue

 

#pragma mark - JSON(對象)----->Data

 

1、原生

 

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

 

#pragma mark - Data----->JSON(對象)

 

1、原生方法

 

guard let array = try? JSONSerialization.jsonObject(with: data, options: []) as? [[String: AnyObject]] else {//轉化失敗就返回
     return
}

 

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

 

guard let array = JSON(data!).arrayObject as? [[String: AnyObject]] else {//轉化失敗就返回
    return
}

 

#pragma mark - JSON字符串----->Data

 

1、原生方法

 

// string字符串按照String.Encoding.utf8這種編碼格式轉化為data
if let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false) {
    //.........
}

 

#pragma mark - Data----->JSON字符串

 

1、原生方法

 

//只要符合String.Encoding.utf8這種編碼的data都能轉化成功
let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue)

 

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

 

//如果轉化后的字符串不是JSON類型的字符串,則輸出null(注意: 該字符串的控制台輸出的格式為JSON格式輸出,實際類型是字符串!!!)
//本質是先轉化為JSON對象再轉化為dessription!!!
let jsonString = JSON(jsonData).description

 

 

更多內容--> 博客導航 每周一篇喲!!!

 

有任何關於iOS開發的問題!歡迎下方留言!!!或者郵件lieryangios@126.com 雖然我不一定能夠解答出來,但是我會請教iOS開發高手!!!解答您的問題!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM