получение значений JSON с помощью swift - PullRequest
0 голосов
/ 11 июля 2019

У меня есть URL-адрес, по которому я хочу получить некоторые данные json, когда я загружаю URL-адрес на веб-странице, именно так выглядит json, как я могу получить эти значения в swift?

{
            "name" : "name value"
            "serial_number" : "serial_numbe value"
            "status" : "status value"
            ...
}

это то, что я до сих пор, но это не работает.Я получаю ошибку invalid conversion from throwing function of type... на мой вызов URLSession.shared

 let web = URL(string: "192.168.101.1:8080/api")
 let webRequest = URLRequest(url: web!)

URLSession.shared.dataTask(with: webRequest, completionHandler: {(data, response, error) in
 guard let data = data, error == nil else {return}

                do{
                    let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String:Any]
                    let main = json as? [String : Any] ?? []
                    print(["name"])
                }

            })

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Там есть синтаксические ошибки.

    guard let web = URL(string: "192.168.101.1:8080/api") else { return }

    URLSession.shared.dataTask(with: web) { (data, response, error) in
        guard error == nil, let data = data else { return }
        do {
            let serializedData = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
            guard let json = serializedData as? [String : Any] else { return }
            print(json["name"])
        } catch {
            debugPrint(error)
        }
    }.resume()
0 голосов
/ 11 июля 2019

Можно попробовать

let web = URL(string: "192.168.101.1:8080/api")
let webRequest = URLRequest(url: web!)

URLSession.shared.dataTask(with: webRequest, completionHandler: {(data, response, error) in
    guard let data = data, error == nil else {return}

    do{
        let main = try JSONSerialization.jsonObject(with: data) as! [String:Any]
        print(main["name"])

        // or
        let dec = JSONDecoder()
        dec.keyDecodingStrategy =.convertFromSnakeCase
        let res = dec.decode(Root.self, from: data)
    }
    catch {

        print(error)
    }

}).resume()

struct Root: Codable {
    let name, serialNumber, status: String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...