首次开发iOS应用:Alamofire解析JSON含空格及转单行JSON求助
嘿,作为刚入门iOS开发的新手,碰到这俩JSON处理问题真的超常见,我来给你捋捋解决方案,保证实用!
问题1:移除JSON解析输出中的多余空格
你看到的多余空格其实是JSON的“美化格式”(pretty-printed)导致的——不管是SwiftyJSON默认的描述输出,还是Alamofire返回响应转字符串时的默认格式,都会带这些空格和换行。要去掉的话,我们可以直接生成紧凑格式的JSON字符串:
假设你已经用Alamofire拿到响应,并用SwiftyJSON解析成了JSON对象,试试这段代码:
// 假设你已经有了解析好的json对象:let json = JSON(responseValue) do { // 生成不带空格和换行的JSON数据,options传空数组就会用紧凑格式 let compactJSONData = try json.rawData(options: []) // 转成字符串输出 if let compactJSONString = String(data: compactJSONData, encoding: .utf8) { print(compactJSONString) } } catch { print("转换JSON字符串失败:\(error.localizedDescription)") }
如果是直接从Alamofire的响应结果处理,也可以跳过SwiftyJSON直接转:
Alamofire.request("你的接口URL").responseJSON { response in switch response.result { case .success(let jsonObject): do { let compactData = try JSONSerialization.data(withJSONObject: jsonObject, options: []) if let compactString = String(data: compactData, encoding: .utf8) { print(compactString) // 这里就是无多余空格的JSON } } catch { print(error) } case .failure(let error): print("请求失败:\(error)") } }
问题2:将Alamofire响应转为单行JSON格式
其实这个需求和上面的问题本质是一样的——单行JSON就是无换行、无多余空格的紧凑格式JSON,所以上面的代码已经能直接解决这个问题啦!
原理很简单:JSONSerialization.data(withJSONObject:options:)方法里,options参数如果传.prettyPrinted就会生成带换行和空格的美化格式;如果传空数组[],就会生成紧凑的单行格式,没有任何多余的空格和换行符,完全符合你的需求。
内容的提问来源于stack exchange,提问作者themasmul
相关产品推荐
相关产品推荐

