下载Image并使用SwiftyJSON将其保存为json

时间:2018-06-07 09:38:56

标签: ios swift swifty-json

我有以下格式的json,我从服务器获取并使用SwiftyJSON进行解析。

{
name: "Ganesh"
imageURL:"www.abc.com/image.png"
}

我正在使用以下代码下载图片:

do{
     let myData = try Data(contentsOf: url)
}catch{
     Print("error")
}

注意:“url”包含来自json的url,它从string转换为URL

我希望将此“myData”保存在上面的同一个json中,并使用不同的密钥,并在将来访问它。

我正在尝试使用SwiftyJSON方法在json中保存myData:

responseJSON["image"] = try JSON(data: myData)

我收到的错误: “如果将数据转换为json时出错,则无法读取数据,因为格式不正确。”

我没有得到什么问题? 图像出现在该网址上。如果我将myData转换为UIImage,如果我在UIImageView上分配它,我可以看到它。

1 个答案:

答案 0 :(得分:1)

如果要以JSON格式保存图像,最好的方法是将Data转换为Base64字符串

if let base64encodedString =  myData.base64EncodedString(){
    responseJSON["image"] = base64encodedString
}

要恢复图像,请尝试以下

guard let base64encodedString = responseJSON["image"] as? String else { return }
guard let imageData = Data(base64Encoded: base64encodedString) else { return }
let image = UIImage(data: imageData)

尽管Base64编码的图像比原始数据占用的空间多大约33%,但它们是Web和数据库安全的 - base64字符串既不包含控制字符,也不包含引号,并且可以作为URL查询字符串中的参数传输。