如何使用Flutter Dart快速解析大型JSON数组并提取jpg对应的repr_file_name字段
Dart 快速提取指定字段方案
你不需要定义完整的实体类,直接用Dart内置的dart:convert库动态遍历JSON结构即可,不需要引入额外依赖,实现成本极低:
- 第一步:导入Dart内置转换库
import 'dart:convert';
- 第二步:编写遍历筛选逻辑
核心逻辑是逐层遍历嵌套数组,筛选出repr_mime_type为image/jpeg的项,提取对应repr_file_name字段,全程加空安全判断避免异常:
List<String> extractJpgFileNames(String jsonStr) { // 解析原始JSON字符串 List<dynamic> jsonList = jsonDecode(jsonStr); List<String> jpgFileNames = []; // 遍历最外层数组 for (var item in jsonList) { if (item is! Map) continue; List<dynamic>? resList = item['res']; if (resList == null) continue; // 遍历res数组 for (var res in resList) { if (res is! Map) continue; List<dynamic>? reprList = res['repr']; if (reprList == null) continue; // 遍历repr数组筛选目标字段 for (var repr in reprList) { if (repr is! Map) continue; if (repr['repr_mime_type'] == 'image/jpeg' && repr['repr_file_name'] is String) { jpgFileNames.add(repr['repr_file_name'] as String); } } } } return jpgFileNames; } // 调用示例 void main() { String yourJson = '替换为你的完整JSON字符串'; List<String> result = extractJpgFileNames(yourJson); print('提取到的jpg文件名:$result'); }
如果后续需要解析更多字段,再考虑用json_serializable这类序列化库生成实体类即可,当前需求用上面的动态遍历方案是效率最高的实现方式。
内容的提问来源于stack exchange,提问作者riki
相关产品推荐
相关产品推荐

