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

Terraform中如何过滤含空值的JSON并保留非空键值对?

问题解决方法

你的代码存在两个核心问题:

  1. 过滤条件错误:你判断的是value != null,但需要排除的是空字符串""而非null;
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:47:44