iOS Swift开发中JSON对象/JSON字符串/Data的互转

https://www.jianshu.com/p/712bb9a60184

 

JSON(对象)----->JSON字符串

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

JSON字符串----->JSON(对象)

第一种原生方法
//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}
第二种:三方框架SwiftyJSON
//JSON字符串-->data-->JSON对象(测试发现直接使用JSON(jsonString).arrayValue是转化不出来的)
let data = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ??Data()
let json = JSON(data).arrayValue

JSON(对象)----->Data

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

Data----->JSON(对象)

第一种原生方法
guard let array = try? JSONSerialization.jsonObject(with: data, options: []) as? [[String: AnyObject]] else {//转化失败就返回
     return}
第二种:三方框架SwiftyJSON
guard let array = JSON(data!).arrayObject as? [[String: AnyObject]] else {//转化失败就返回
    return}

JSON字符串----->Data

//string字符串按照String.Encoding.utf8这种编码格式转化为data
if let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false) {
    //.........
}

Data----->JSON字符串

第一种原生方法
//只要符合String.Encoding.utf8这种编码的data都能转化成功
let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
第二种:三方框架SwiftyJSON
//如果转化后的字符串不是JSON类型的字符串,则输出null(注意: 该字符串的控制台输出的格式为JSON格式输出,实际类型是字符串!!!)
//本质是先转化为JSON对象再转化为dessription!!!

let jsonString = JSON(jsonData).description


作者:Lee坚武
链接:https://www.jianshu.com/p/712bb9a60184
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2023-02-22 10:16  itlover2013  阅读(311)  评论(0编辑  收藏  举报