Доступ к внутренней информации JSON в Swift - PullRequest
0 голосов
/ 09 февраля 2019

Я получил свои данные, но мне нужны первые данные, которые равны «0», так как я могу получить доступ к чему-то вроде «цена» или «имя продукта»

    ["0": {
        price = "4.77";
        productname = "KISSES Giant Milk Chocolate Candy, 7 oz";
    }]



URLSession.shared.dataTask(with: url!) { (data, response, err) in
        guard let data = data else {return}

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


        } catch let jsonErr {

        }

    }.resume()

1 Ответ

0 голосов
/ 09 февраля 2019

Как уже упоминалось в комментариях, не используйте JSONSerialization, используйте Decodable.

Там довольно просто перевести "0" в допустимое имя члена структуры с помощью CodingKeys

struct Root: Decodable {
    let zero: Product

    private enum CodingKeys : String, CodingKey { case zero = "0" }
}

struct Product: Decodable {
    let price, productname : String
}

...

let jsonString = """
{"0":{"price":"4.77","productname":"KISSES Giant Milk Chocolate Candy, 7 oz"}}
"""

let data = Data(jsonString.utf8)
do {
    let result = try JSONDecoder().decode(Root.self, from: data)
    print(result.zero.productname)
} catch { print(error) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...