You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 03:33:03