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

如何读取通过--dart-define-from-file传入的嵌套JSON键?

问题解答

不能直接通过String.fromEnvironment("key2.key3")的方式获取嵌套的key3值,原因如下:

  • flutter run --dart-define-from-file仅会解析JSON文件中的顶层键值对:
    • 顶层字符串值(比如key1对应的value1)会直接映射为环境变量;
    • 顶层值如果是嵌套对象(比如key2对应的{"key3":"value3"}),会被整体序列化为字符串形式导入,不会递归展开成key2.key3这类带点的环境变量名。

正确获取嵌套值的方法

你需要先获取key2对应的JSON字符串,再手动解析成Map来提取key3:

import 'dart:convert';

void main() {
  // 获取key2对应的JSON字符串
  final key2Json = String.fromEnvironment("key2");
  if (key2Json != null) {
    // 解析为Map
    final key2Map = jsonDecode(key2Json) as Map<String, dynamic>;
    // 提取key3的值
    final key3Value = key2Map["key3"] as String;
    print(key3Value); // 输出: value3
  }
}

备选方案(不推荐)

如果非要通过点分隔的环境变量名直接获取,你可以手动修改secret.json的结构,把嵌套键提到顶层:

{ 
  "key1": "value1", 
  "key2.key3": "value3" 
}

这样就能直接用String.fromEnvironment("key2.key3")获取值,但这种方式会破坏JSON的层级结构,仅适合简单场景。

内容的提问来源于stack exchange,提问作者Karthik K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:30:00