Flutter导入dart:convert仍找不到fromJson与parsedJson方法求助
解决Flutter JSON解析的几个常见错误
嘿,看了你的问题,这几个错误都是Model层的实现问题,和dart:convert导入没关系,咱一步步来解决:
1. 错误:Method not found: 'TextProblem.fromJson'
这个问题很明确:你的TextProblem类根本没定义fromJson这个构造函数/方法。Flutter不会自动生成JSON解析逻辑,得你手动实现(新手先手写,熟悉后可以用json_serializable插件自动生成)。
你需要在model_textproblem.dart里给TextProblem添加一个工厂构造函数,用来把JSON对象转成模型实例。
2. 错误:Getter not found: 'parsedJson'
这个是因为你在Model里直接用了parsedJson这个变量,但它要么没被定义,要么不在当前作用域里。你应该用解析时传入的JSON对象,而不是凭空的parsedJson变量。
修改后的model_textproblem.dart代码示例
根据你的错误信息,我推测你的JSON结构包含taskPrmtrs、taskTags和problemTasks这类字段,下面是适配的Model实现:
import 'dart:convert'; // 主模型类 class TextProblem { final List<ProblemTask> problemTasks; // 可根据JSON结构添加其他属性,比如taskPrmtrs、taskTags // 普通构造函数 TextProblem({required this.problemTasks}); // 关键:实现fromJson工厂构造函数,用于解析JSON factory TextProblem.fromJson(Map<String, dynamic> json) { // 替换你原来的parsedJson,直接用传入的json参数 var problemTasksList = json['problemTasks'] as List<dynamic>; // 将JSON数组转为ProblemTask实例列表 List<ProblemTask> tasks = problemTasksList .map((taskJson) => ProblemTask.fromJson(taskJson)) .toList(); // 如果需要处理taskPrmtrs和taskTags,直接用json['taskPrmtrs']获取即可 // var taskPrmtrs = json['taskPrmtrs'] as List; // var taskTags = json['taskTags'] as List; return TextProblem(problemTasks: tasks); } } // 嵌套的子模型类 class ProblemTask { final String taskText; // 其他子属性根据JSON结构补充 ProblemTask({required this.taskText}); // 子模型的fromJson构造函数 factory ProblemTask.fromJson(Map<String, dynamic> json) { return ProblemTask( taskText: json['taskText'] ?? '', // 加空值判断避免字段缺失崩溃 ); } }
验证你的Service代码
你的service_textproblem.dart代码是没问题的,只要Model层补好fromJson方法,调用TextProblem.fromJson(jsonResponse)就不会报错了。
额外提示
- 如果JSON结构复杂,后期可以用
json_serializable插件自动生成解析代码,减少手动编写的工作量。 - 解析时尽量添加空值判断,避免因JSON字段缺失导致应用崩溃。
内容的提问来源于stack exchange,提问作者w461
相关产品推荐
相关产品推荐

