如何读取通过--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
相关产品推荐
相关产品推荐

