[Jolt]根据以键/值格式提供的动态值删除数组元素

问题描述 投票:0回答:1

如果元素是固定键的值,我试图删除该数组元素。 输入:

{
  "components": {
    "schemas": {
      "element1": {
        "type": "string",
        "remove_element_from_values": ["value_3"],
        "enum": [
          "value_1",
          "value_2",
          "value_3",
          "value_4",
          "value_5"
        ],
        "example": "example of element1"
      },
      "element2": {
        "type": "string",
        "remove_element_from_values": ["value_1", "value_5"],
        "values": [
          "value_1",
          "value_2",
          "value_3",
          "value_4",
          "value_5"
        ],
        "example": "example of element2"
      }
    }
  }
}

我需要一个 jolt 规范,它将查看“remove_element_from_values”字段,并根据那里的输入数组,它将从值数组元素中删除值,并从最终输出中删除“remove_element_from_values”。

预期输出:

{
  "components": {
    "schemas": {
      "element1": {
        "type": "string",
        "enum": [
          "value_1",
          "value_2",
          "value_4",
          "value_5"
        ],
        "example": "example of element1"
      },
      "element2": {
        "type": "string",
        "enum": [
          "value_2",
          "value_3",
          "value_4"
        ],
        "example": "example of element2"
      }
    }
  }
}

任何帮助将不胜感激。我现在正在尝试为此获取一个工作规范。

我尝试查看 jolt space 中几乎所有不同的 wiki/问题,但无法找到我的解决方案。

json transformation jolt
1个回答
0
投票

您可以使用以下shift转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*alues|enum": {
              "*": {
                "$": "&5.&4.&3.enum.@0"
              }
            },
            "type|example": "&3.&2.&1.&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "enum": {
              "*": {
                "$": "&5.&4.&3.&2.@0"
              }
            },
            "t*|e*": "&3.&2.&1.&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "enum": {
              "*": {
                "@": "&5.&4.&3.&2"
              }
            },
            "*": "&3.&2.&1.&"
          }
        }
      }
    }
  }
]

第一个规范中匹配值生成数组,在第二个规范中键值交换后它们将消失

网站上的 演示 http://jolt-demo.appspot.com/ 是:

© www.soinside.com 2019 - 2024. All rights reserved.