You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次开发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:12:27