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

Flutter中如何获取嵌套数据内的referralCode?

在Flutter中解析嵌套JSON获取referralCode字段的方法

原始响应数据结构:

{"dynamic_link_data":{"data":{"referralCode":"1234"}}}

方法一:手动解析JSON

无需额外依赖,直接通过键值逐层访问:

import 'dart:convert';

void extractReferralCode() {
  // 模拟接口返回的响应字符串
  String responseStr = '{"dynamic_link_data":{"data":{"referralCode":"1234"}}}';
  
  // 将JSON字符串转为Map结构
  Map<String, dynamic> responseMap = jsonDecode(responseStr);
  
  // 逐层获取嵌套的referralCode字段
  String referralCode = responseMap['dynamic_link_data']['data']['referralCode'];
  
  print(referralCode); // 输出:1234
}

如果需要处理字段可能不存在的情况,可通过空安全操作符避免报错:

String referralCode = responseMap['dynamic_link_data']?['data']?['referralCode'] ?? '默认值';

方法二:使用json_serializable生成模型类

适合复杂JSON结构,提升代码可维护性:

  1. 在pubspec.yaml中添加依赖:
dependencies:
  json_annotation: ^4.8.1

dev_dependencies:
  build_runner: ^2.4.4
  json_serializable: ^6.7.0
  1. 创建模型类文件(例如dynamic_link_model.dart):
import 'package:json_annotation/json_annotation.dart';

part 'dynamic_link_model.g.dart';

@JsonSerializable()
class DynamicLinkResponse {
  @JsonKey(name: 'dynamic_link_data')
  final DynamicLinkData dynamicLinkData;

  DynamicLinkResponse({required this.dynamicLinkData});

  factory DynamicLinkResponse.fromJson(Map<String, dynamic> json) =>
      _$DynamicLinkResponseFromJson(json);
}

@JsonSerializable()
class DynamicLinkData {
  final Data data;

  DynamicLinkData({required this.data});

  factory DynamicLinkData.fromJson(Map<String, dynamic> json) =>
      _$DynamicLinkDataFromJson(json);
}

@JsonSerializable()
class Data {
  final String referralCode;

  Data({required this.referralCode});

  factory Data.fromJson(Map<String, dynamic> json) => _$DataFromJson(json);
}
  1. 运行命令生成序列化代码:
flutter pub run build_runner build
  1. 解析JSON并获取字段:
import 'dart:convert';
import 'dynamic_link_model.dart';

void extractReferralCode() {
  String responseStr = '{"dynamic_link_data":{"data":{"referralCode":"1234"}}}';
  Map<String, dynamic> responseMap = jsonDecode(responseStr);
  
  DynamicLinkResponse response = DynamicLinkResponse.fromJson(responseMap);
  String referralCode = response.dynamicLinkData.data.referralCode;
  
  print(referralCode); // 输出:1234
}

内容的提问来源于stack exchange,提问作者wolfsoft Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:01:26