如何在Flutter中使用Dart解析REST API返回的JSON数组数据
Dart解析外层为数组结构JSON的标准方案
你遇到的类型识别问题本质是json.decode返回值默认是dynamic类型,没有做逐层显式类型转换导致的,不是解析过程丢失了字符串标识,按以下规范步骤处理即可:
核心实现代码
import 'dart:convert'; void parseApiResponse(String responseBody) { // 1. 解析JSON并显式转换为List类型 final List<dynamic> parsedList = json.decode(responseBody) as List; // 可选:增加数组非空判断,避免接口返回空数组时报错 if (parsedList.isEmpty) return; // 2. 提取数组第一个元素,转换为Map类型 final Map<String, dynamic> data = parsedList.first as Map<String, dynamic>; // 3. 取值时显式指定类型,字符串会被正常识别 final String key1 = data['key1'] as String; final String key2 = data['key2'] as String; // 后续业务逻辑处理 print('key1: $key1, key2: $key2'); }
补充说明
- 外层带方括号的数组结构本身是合法JSON格式,完全不需要手动裁剪首尾符号,按数组结构解析就符合编码规范
- 如果是高频使用的业务接口,建议使用
json_serializable库自动生成序列化解析代码,减少手动类型转换的出错概率
内容的提问来源于stack exchange,提问作者FloM89
相关产品推荐
相关产品推荐

