Swift 3 - не могу получить информацию после загрузки этих данных - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь получить доступ к данным, загруженным с веб-сайта, который выглядит следующим образом:

{"quizzes":[
{"id":1, "question": "Can't solve this :("},
{"id":2, "question": "Someone help pls"}]}

Загруженные данные выглядят более сложными: больше значений, больше ключей и некоторые ключи связаны сдругой словарь Key: String, но так как я не могу даже получить доступ к самым простым полям, я подумал, что начну с этого.

Я использую JSONSerialization, поэтому мой вопрос:

Если я хочу создать переменную, в которой я могу сохранить загруженные данные ... Какой это будет тип?Я бы сказал [String: [String: Any]], но я не уверен, представляет ли «викторины» ключ для этого конкретного ключа, поскольку данные начинаются с «{», а не с «[».

1 Ответ

0 голосов
/ 17 ноября 2018

Вместо использования JSONSerialization можно использовать JSONDecoder.

Пример

struct Question: Decodable {
    let id: Int
    let question: String
}

struct Quiz: Decodable {
    let quizzes: [Question]
}

Предполагая, что jsonStr - это строка с JSON в вашем вопросе:

if let jsonData = jsonStr.data(using: .utf8) {
    if let quiz = try? JSONDecoder().decode(Quiz.self, from: jsonData) {
        for question in quiz.quizzes {
            print("\(question.id) \"\(question.question)\"")
        }
    }
}

Выход

1 "Can't solve this :("
2 "Someone help pls"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...