Flutter如何解析JSON数据并在VS Code终端打印指定字段内容
Flutter 提取指定JSON字段并打印到VS Code终端实现方案
实现前提
- 已拿到接口返回的完整JSON字符串
- 项目已导入
dart:convert库用于JSON解析
方案1:手动解析(适合临时快速使用)
直接将JSON字符串转成Map后提取指定字段,代码如下:
import 'dart:convert'; // 假设response.body为接口返回的完整JSON字符串 Map<String, dynamic> fullResponseJson = jsonDecode(response.body); // 提取目标字段 Map<String, dynamic> targetContent = { "id": fullResponseJson["id"], "title": fullResponseJson["title"], "gradeName": fullResponseJson["gradeName"], "subjectName": fullResponseJson["subjectName"], "videoUrl": fullResponseJson["videoUrl"], "status": fullResponseJson["status"], "createdDate": fullResponseJson["createdDate"], "admin": fullResponseJson["admin"], }; // 普通打印 print(targetContent); // 格式化打印(输出结构更易读) print(const JsonEncoder.withIndent(' ').convert(targetContent));
方案2:模型类解析(适合正式项目使用)
先定义对应字段的模型类,解析逻辑更规范可复用,避免硬编码错误。
第一步:定义模型类
新建course_model.dart文件,代码如下:
class CourseModel { final int id; final String title; final String gradeName; final String subjectName; final String videoUrl; final bool status; final String createdDate; final bool admin; CourseModel({ required this.id, required this.title, required this.gradeName, required this.subjectName, required this.videoUrl, required this.status, required this.createdDate, required this.admin, }); factory CourseModel.fromJson(Map<String, dynamic> json) { return CourseModel( id: json['id'] as int, title: json['title'] as String, gradeName: json['gradeName'] as String, subjectName: json['subjectName'] as String, videoUrl: json['videoUrl'] as String, status: json['status'] as bool, createdDate: json['createdDate'] as String, admin: json['admin'] as bool, ); } Map<String, dynamic> toJson() => { "id": id, "title": title, "gradeName": gradeName, "subjectName": subjectName, "videoUrl": videoUrl, "status": status, "createdDate": createdDate, "admin": admin, }; }
第二步:解析并打印
import 'dart:convert'; import 'course_model.dart'; // 解析完整JSON Map<String, dynamic> fullResponseJson = jsonDecode(response.body); CourseModel course = CourseModel.fromJson(fullResponseJson); // 打印所有目标字段 print(course.toJson()); // 也可单独打印指定字段 print("课程标题:${course.title}"); print("视频ID:${course.videoUrl}");
注意事项
- 若JSON字段可能为空,可将模型类属性定义为可选类型并设置默认值,避免类型转换异常
- 若VS Code控制台无打印输出,确认当前运行的是Debug模式,且控制台过滤条件未隐藏输出内容
内容的提问来源于stack exchange,提问作者Laxman Magarati
相关产品推荐
相关产品推荐

