Terraform中如何过滤含空值的JSON并保留非空键值对?
问题解决方法
你的代码存在两个核心问题:
- 过滤条件错误:你判断的是
value != null,但需要排除的是空字符串""而非null; for_each使用了列表而非映射:列表会生成数字索引的实例,而映射能保留原键名,更贴合你的需求。
修正后的代码
你可以通过映射推导式直接在for_each中完成过滤,也可以先在locals中预处理变量,两种方式都能得到目标结果:
方式1:直接在for_each中过滤
resource "databricks_secret" "workspace" { for_each = { for key, value in local.workspace_vars : key => value if value != "" } key = each.key string_value = each.value }
方式2:先在locals中预处理(更易维护)
locals { # 过滤掉值为空字符串的键值对 filtered_workspace_vars = { for key, value in local.workspace_vars : key => value if value != "" } } resource "databricks_secret" "workspace" { for_each = local.filtered_workspace_vars key = each.key string_value = each.value }
效果说明
上述代码会自动过滤掉b和d这两个值为空字符串的条目,最终生成的实例对应以下键值对:
{ "a": "A", "c": "C", "e": "E", "f": "F" }
内容的提问来源于stack exchange,提问作者Vinit Khandelwal
相关产品推荐
相关产品推荐

