放在方括号内时,JSON是否为原始字符串?

时间:2019-07-10 08:22:33

标签: json swift alamofire swifty-json

注意:这个问题现在完全没有问题,因为事实证明,我想实现的目标实际上是可以使用我的原始方法实现的。实际上,只是我发送了导致问题的空参数集。尽管如此,也许某个地方的人可能会发现建议使用的其他方法之一有用,所以我将其留在这里。

我一直在使用以下代码片段将JSON转换为完全适合大括号内的JSON的原始字符串:

AF.request("https://blahblah.com", method: .get, parameters: [:], encoding:JSONEncoding.default, headers: headers)
            .responseJSON { response in
                guard let data = response.data else { return }
                let json = try? JSON(data:data)
                if let jsonAsString = json?.rawString(){
                    self.consoleWindow.stringValue += jsonAsString
                }
           }

当JSON用大括号括起来时,这很好用:

{
        "blah1": true,
        "blah2": "ABCDEF",
        "blah3": "12345"
}

但是,我现在收到的JSON括在方括号中,如下所示:(编辑:不一定总是3个元素,需要作为一般解决方案)

[
    {
        "blah1": true,
        "blah2": "ABCDEF",
        "blah3": "12345"
    }
]

使用原始方法时,我只会得到一个空字符串。

我是JSON和SwiftyJSON的新手,所以我不确定方括号如何更改JSON的结构。像我对大括号括起来的JSON一样,如何将方括号JSON作为原始字符串输出?

编辑:对于某些情况,我正在尝试创建类似控制台窗口之类的东西,该窗口将输出具有任何数量的元素的任何格式的JSON。

1 个答案:

答案 0 :(得分:0)

如果只想获取服务器响应的字符串表示形式,请执行以下操作:

By default, Nova will place newly generated filters in the app/Nova/Filters directory

如果您需要将接收到的数据解析为模型对象,我建议为此使用swift的内置AF.request("https://blahblah.com", method: .get, parameters: [:], encoding:JSONEncoding.default, headers: headers) .responseJSON { response in guard let data = response.data, let string = String(bytes: data, encoding: .utf8) else { return } self.consoleWindow.stringValue += string } } 而不是SwiftyJSON。

Codable

最后,我还建议您考虑为什么需要Alamofire。恕我直言,使用URLSession / URLSessionDataTask并没有那么复杂,并且拥有更少的第三者依赖关系总是很有利的。