#flutter #dart
Вопрос:
У меня есть этот текст ответа от API. Когда я пытаюсь создать новую игру на основе этого ответа, я получаю сообщение об ошибке :
response : {success: true, games: [{game_id: 3, game_gide: {0: b, 1: , 2: , 3: a, 11: b, 14: e}, game_cells: [3,8,23,18,2,7,17,22,1,6,16,21], game_questions: [{title: question 2 h, answer: abcde, isTrue: false}, {title: question 1 h, answer: xxxxx, isTrue: false}]}
ошибка : Необработанное исключение: тип «Список» не является подтипом типа » Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;»
class Game { String gameId; String gameLevel; Listlt;intgt; gameCells; Listlt;Questiongt; gameQuestions; Game({ this.gameId, this.gameLevel, this.gameCells, this.gameQuestions, }); static fromJson(Maplt;String, dynamicgt; parsedJson){ print(parsedJson['game_vertical_questions']); return Game( gameId: parsedJson['game_id'], gameLevel: parsedJson['game_level'], gameCells: (jsonDecode(parsedJson['game_cells']) as Listlt;dynamicgt;).castlt;intgt;(), gameQuestions : Question.listFromJson(parsedJson['game_questions']), ); } } class Question { String title; String answer; bool isTrue; Question({ this.title, this.answer, this.isTrue}); static listFromJson(Listlt;Maplt;String, dynamicgt;gt; list) { Listlt;Questiongt; questions = []; for (var value in list) { questions.add(Question.fromJson(value)); } return questions; } static fromJson(Maplt;String, dynamicgt; parsedJson){ return Question( title: parsedJson["title"], answer: parsedJson["answer"], isTrue: parsedJson["isTrue"] ); } }
Я получаю ошибку при попытке использовать текст JSON следующим образом:
var jsonData = json.decode(response.body); var res = jsonData["games"]; for (var g in res){ //print(g); Game game = Game.fromJson(g); setState(() { gamesList.add(game); }); }
ошибка:
Необработанное исключение: тип «Список» не является подтипом типа » Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;»
Он указывает на эту строку в игровом классе:
gameQuestions : Question.listFromJson(parsedJson['game_questions']),
есть какие-нибудь предложения ?
Ответ №1:
Попробуй это,
Question.listFromJson(Listlt;Maplt;String,dynamicgt;gt;.from(parsedJson['game_questions'])),
Комментарии:
1. Ты имеешь в виду в Игровом классе ? Если да, то я не могу этого сделать. получение ошибки (Тип аргумента «Списокlt;Картаlt;Строка, динамическаяgt;lt;Строка, динамическаяgt;gt;» не может быть присвоен типу параметра » Списокlt;Строка, динамическаяgt;gt;lt;Вопросgt;».)
2. Извините, я не внимательно прочитал ваш вопрос, отредактированный ответ
3. не работает , по-прежнему появляется одно и то же необработанное исключение ошибки: тип «Списокlt;динамическийgt;» не является подтипом типа » Картаlt;динамическаяgt;lt;Строка, динамическаяgt;»
Ответ №2:
Мы можем решить эту проблему, изменив static
конструктор Question
класса:
static listFromJson(Listlt; dynamicgt; list) { // change Listlt;Questiongt; questions = []; for (var value in list) { questions.add(Question.fromJson(value)); } return questions; }
Комментарии:
1. Необработанное исключение: тип » Списокlt;динамическийgt;» не является подтипом типа «Картаlt;динамическаяgt;lt;Строка, динамическаяgt;» … все еще выводится
2. но исключение теперь указывает на значение внутри статического конструктора класса Question