首页 > 解决方案 > 使用 JOLT 基于过滤器提取 Json 数组中的某些字段

问题描述

请帮忙。我正在尝试根据某些条件(名称列表和键值为“key2”的匹配项)从以下输入中提取某些字段。但没有得到正确的结果。

json输入:

{"schemas": [
{
  "name": "myschema",
  "tables": [
    {
      "name": "myname",
      "alias": "temp_alias",
      "keys": [
        {
          "name": "value1",
          "key": "key1",
          "match": "match_val"
        },
        {
          "name": "value21",
          "key": "key2",
          "match": "match_val2"
        },
        {
          "name": "value22",
          "key": "key2",
          "match": "match_val2"
        },
        {
          "name": "value3",
          "key": "key3"
        },
        {
          "name": "value4",
          "key": "key4"
        }
      ]
    }
  ]
}

] }

预期输出:键值为“key2”的名称和匹配项列表。

{"key2": [
{
  "name": "value21",
  "match": "match_val2"
},
{
  "name": "value22",
  "match": "match_val2"
}

] }

我使用了以下规范,但它提供了输出中的所有键。

[{
"operation": "shift",
"spec": {
  "schemas": {
    "*": {
      "tables": {
        "*": {
          "keys": {
            "*": {
              "key": {
                "key2": {
                  "@2": "&"
                }
              }
            }
          }
        }
      }
    }
  }
}

}]

标签: jolt

解决方案


检查这个规格,

[
  {
    "operation": "shift",
    "spec": {
      "schemas": {
        "*": {
          "tables": {
            "*": {
              "keys": {
                "*": {
                  "key": {
                    "key2": {
                      "@2": "@2[]"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

推荐阅读