Ожидается декодировать словарь <String, Any>, но вместо этого найден массив. ", UnderError: nil)) - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь проанализировать некоторые json, используя swift 4 и используя decode. То, что я запутался, на

Ожидается декодирование словаря , но вместо этого найден массив. ", UnderError: nil))

Я новичок в использовании декодирования и новичок в swift в целом, поэтому мне было интересно, почему я получаю эту ошибку, я предполагаю, что на самом деле не определяю свои структуры правильным образом.

Вот как я определяю свои струки

struct QuizDesc: Decodable {
    let title: String
    let desc: String
    let questions: [Questions]
}

struct Questions: Decodable {
    let text: String
    let answer: Int
    let answers: [Answers]
}

struct Answers: Decodable {
    let answerOne: String
    let answerTwo: String
    let answerThree: String
    let answerFour: String
}

И вот как я использую функцию декодирования

let jsonString = "http://tednewardsandbox.site44.com/questions.json"

guard let url = URL(string: jsonString)else {return}

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

    do {
        let quiz = try JSONDecoder().decode(QuizDesc.self, from: data)

        print(quiz.title)
    } catch let jsonErr {
        print("Error", jsonErr)
    }
}.resume()

Это ссылка, которую я использую для извлечения данных JSON http://tednewardsandbox.site44.com/questions.json

1 Ответ

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

Ваш JSON является массивом QuizDesc.Измените QuizDesc.self на [QuizDesc].self.Затем переименуйте quiz в quizzes.

...