Expected to decode Dictionary but found an array instead.", underlyingError: nil))












0















I trying to parse some json using swift 4 and using decode. What I am confused is on the




Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))




I am new to using decode and new to swift in general so I was wondering why I would be getting this error, I assume I am not really defining my structs the right way.



This is how I am defining my strucs



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
}


And this is how I am using the decode function



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()


This is the link I am using to extract the json data
http://tednewardsandbox.site44.com/questions.json










share|improve this question





























    0















    I trying to parse some json using swift 4 and using decode. What I am confused is on the




    Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))




    I am new to using decode and new to swift in general so I was wondering why I would be getting this error, I assume I am not really defining my structs the right way.



    This is how I am defining my strucs



    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
    }


    And this is how I am using the decode function



    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()


    This is the link I am using to extract the json data
    http://tednewardsandbox.site44.com/questions.json










    share|improve this question



























      0












      0








      0








      I trying to parse some json using swift 4 and using decode. What I am confused is on the




      Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))




      I am new to using decode and new to swift in general so I was wondering why I would be getting this error, I assume I am not really defining my structs the right way.



      This is how I am defining my strucs



      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
      }


      And this is how I am using the decode function



      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()


      This is the link I am using to extract the json data
      http://tednewardsandbox.site44.com/questions.json










      share|improve this question
















      I trying to parse some json using swift 4 and using decode. What I am confused is on the




      Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))




      I am new to using decode and new to swift in general so I was wondering why I would be getting this error, I assume I am not really defining my structs the right way.



      This is how I am defining my strucs



      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
      }


      And this is how I am using the decode function



      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()


      This is the link I am using to extract the json data
      http://tednewardsandbox.site44.com/questions.json







      swift jsondecoder






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 16 '18 at 4:07









      rmaddy

      241k27315380




      241k27315380










      asked Nov 16 '18 at 3:28









      Zubair AmjadZubair Amjad

      607




      607
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Your JSON is an array of QuizDesc. Change QuizDesc.self to [QuizDesc].self. Then rename quiz to quizzes.






          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53330995%2fexpected-to-decode-dictionarystring-any-but-found-an-array-instead-underly%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Your JSON is an array of QuizDesc. Change QuizDesc.self to [QuizDesc].self. Then rename quiz to quizzes.






            share|improve this answer




























              0














              Your JSON is an array of QuizDesc. Change QuizDesc.self to [QuizDesc].self. Then rename quiz to quizzes.






              share|improve this answer


























                0












                0








                0







                Your JSON is an array of QuizDesc. Change QuizDesc.self to [QuizDesc].self. Then rename quiz to quizzes.






                share|improve this answer













                Your JSON is an array of QuizDesc. Change QuizDesc.self to [QuizDesc].self. Then rename quiz to quizzes.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 16 '18 at 4:09









                rmaddyrmaddy

                241k27315380




                241k27315380






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53330995%2fexpected-to-decode-dictionarystring-any-but-found-an-array-instead-underly%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    Xamarin.form Move up view when keyboard appear

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Anylogic : not able to use stopDelay()