Flutter如何从API返回的JSON中提取并打印姓名、邮政编码
要从当前获取到的JSON响应中提取指定字段,不需要改动现有的请求逻辑,只需要在200状态码的分支中补充JSON解析步骤即可,具体操作如下:
- 第一步:在页面/脚本的文件顶部引入Dart内置的JSON解析工具库
import 'dart:convert';
- 第二步:替换原有200响应分支的打印逻辑,将纯字符串响应转换为可按键名读取的Map结构,再按字段层级提取目标值:
if (response.statusCode == 200) { // 读取完整的响应文本 final responseText = await response.stream.bytesToString(); // 将JSON文本解析为键值对结构 final Map<String, dynamic> parsedJson = jsonDecode(responseText); // 提取顶层first_ame字段(注意接口返回的该字段本身拼写为first_ame,并非通用的first_name) final extractedName = parsedJson['first_ame']; // 提取嵌套在address对象下的zip_code字段 final extractedZip = parsedJson['address']['zip_code']; // 打印目标值 print('提取到的名字:$extractedName'); print('提取到的邮政编码:$extractedZip'); }
实操注意事项
- 字段名必须和接口返回完全匹配:本次接口返回的名字字段为拼写存在缺漏的
first_ame,如果习惯性写为first_name会取不到值,返回null - 增加空值防护避免运行时报错:如果担心接口返回结构变动,可以在取嵌套字段时增加可选链判断,例如取邮政编码时写为
parsedJson['address']?['zip_code'],即使address字段缺失也不会抛出异常 - 类型转换:解析出的字段默认是dynamic类型,如果需要固定为字符串类型,可以在取值后做强转,例如
parsedJson['first_ame'] as String
内容的提问来源于stack exchange,提问作者Al-Hashimy
相关产品推荐
相关产品推荐

