将图像转换为 Json Swift 3 的 Base64
Posted
技术标签:
【中文标题】将图像转换为 Json Swift 3 的 Base64【英文标题】:Convert Image to Base64 for Json Swift 3 【发布时间】:2016-12-02 15:48:04 【问题描述】:我需要将UIImage
转换为base64
以将其发送到JSON
。我的问题是转换。我的代码:
//Proof #1
let base64String = imageData?.base64EncodedData(options: .endLineWithLineFeed)
//Proof #2
let base64String = imageData?.base64EncodedString(options: .endLineWithLineFeed)
let dataJson = ["patient_image": ["title": titleInfo, "description": descriptionInfo, "patient_id": globalID, "images_attributes": ["file": base64String]]]
let url = NSURL(string: "MY_URL")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST" //set http method as POST
request.httpBody = try! JSONSerialization.data(withJSONObject: dataJson, options: .prettyPrinted)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
我尝试了Swift 3
提供的将图像转换为base64
的两种方式,但两者都出现相同的错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)'
有人可以帮助我吗?非常感谢您的帮助。
【问题讨论】:
【参考方案1】:删除选项:
let base64String = imageData.base64EncodedString()
完整代码:
/*
let imageData = Data()
let titleInfo = "test"
let descriptionInfo = "test"
let globalID = "test"
*/
let base64String = imageData.base64EncodedString()
let dataJson = ["patient_image": ["title": titleInfo, "description": descriptionInfo, "patient_id": globalID, "images_attributes": ["file": base64String]]]
let url = NSURL(string: "MY_URL")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST" //set http method as POST
request.httpBody = try! JSONSerialization.data(withJSONObject: dataJson, options: .prettyPrinted)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
另外(与您的问题无关)键名 images_attributes
听起来像是需要一个数组。
【讨论】:
let base64String = imageData.base64EncodedString() 很酷,它对我帮助很大。但是我想知道如果我们使用选项,为什么以及有什么区别?以上是关于将图像转换为 Json Swift 3 的 Base64的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Alamofire 4.4.0 将 JSON 字符串转换为转义的 JSON 字符串(Swift 3)?
将 json 和 HTTP“post”代码转换为 Swift 3 时出错
Swift json 解析错误:无法将 NSCFConstantString 类型的值转换为 NSArray
NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程