无法使用类型的参数列表调用'jsonObject'

问题描述 投票:0回答:2

使用此代码从具有Basic身份验证的服务器获取JSON时:

                    let config = URLSessionConfiguration.default
        let userPasswordData = "\(username!):\(password!)".data(using: .utf8)
        let base64EncodedCredential = userPasswordData!.base64EncodedString(options: Data.Base64EncodingOptions.init(rawValue: 0))
        let authString = "Basic \(base64EncodedCredential)"
        config.httpAdditionalHeaders = ["Authorization" : authString]
        let session = URLSession(configuration: config)

        let url = URL(string: "https://theforest.academy/api/v1/auth")
        let task = session.dataTask(with: url!) {
            (data, response, error) in
            if (response as? HTTPURLResponse) != nil {


                do {
                    if let data = data {
                       // let json1 = try JSONSerialization.jsonObject(with: data) as? [String: Any]
                        let json = try JSONSerialization.jsonObject(with: data, options: [], error: []) as? [String: Any]
                        if(json["valid"]) {
                            print(json["token"])
                        } else {
                            print("Invalid login")
                        }
                    }
                } catch {
                    print("Error deserializing JSON: \(error)")
                }

我收到以下错误

无法使用类型'的参数列表调用'jsonObject'(with:Data,options:[Any],error:[Any])'

swift swift3
2个回答
2
投票

看看documentation,似乎你只有两个选择:

jsonObject(with: Data, options: JSONSerialization.ReadingOptions = [])

jsonObject(with: InputStream, options: JSONSerialization.ReadingOptions = [])

我想你正在寻找第一种方法。也许你会混淆它

writeJSONObject(Any, to: OutputStream, options: JSONSerialization.WritingOptions = [], error: NSErrorPointer)

因此,简而言之,这种方法不存在。这就是你得到错误的原因。


0
投票

这是因为我们在获取数据时没有处理错误。所以我们需要安全地输入种姓数据,然后将其传递给JsonSerializer。这是代码。

    do {
        let data = try NSData.init(contentsOfFile: path) as Data
        let jsonArray = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
        print(jsonArray)
    } catch {
        print("Error getting data")
    }
© www.soinside.com 2019 - 2024. All rights reserved.