删除Sesam DTL中的空属性

时间:2017-12-04 12:15:07

标签: sesam

使用Sesam我留下了一堆空属性。

如何继续跳过DTL中完全为null的属性? 执行此操作的任何DTL示例都会很棒。

实施例

自:

{
  "address": "37484 Mohr Freeway\nNew Myrnaview, MI 89092",
  "birth_date": "2001-02-18",
  "column1": "01ba3bc2-8e22-4971-9683-b2ae05a39cd1",
  "column2": "null",
  "company": "Fay-Cole",
  "credit_card": "4049553515365",
  "first_name": "Dummy",
  "home_page": "http://www.mante.com/faq/",
  "job": "Airline pilot",
  "last_name": "User",
}

要:

{
  "address": "37484 Mohr Freeway\nNew Myrnaview, MI 89092",
  "birth_date": "2001-02-18",
  "column1": "01ba3bc2-8e22-4971-9683-b2ae05a39cd1",
  "company": "Fay-Cole",
  "credit_card": "4049553515365",
  "first_name": "Dummy",
  "home_page": "http://www.mante.com/faq/",
  "job": "Airline pilot",
  "last_name": "User",
}

2 个答案:

答案 0 :(得分:1)

这可以通过使用“键值”,“合并”和“应用”功能的组合来解决,如下所示:

{
  "_id": "remove-null-values",
  "type": "pipe",
  "source": {
    "type": "embedded",
    "entities": [{
      "_id": "foo",
      "bar": "baz",
      "foo": null
    }]
  },
  "transform": {
    "type": "dtl",
    "rules": {
      "default": [
        ["merge",
          ["apply", "drop-nulls",
            ["key-values", "_S."]
          ]
        ]
      ],
      "drop-nulls": [
        ["filter",
          ["is-not-null", "_S.value"]
        ],
        ["merge",
          ["dict", "_S.key", "_S.value"]
        ]
      ]
    }
  }
}

结果将是:

[
  {
    "_id": "foo",
    "bar": "baz"
  }
]

答案 1 :(得分:1)

以下是两种不同的解决方案:

备选方案1:

exit

备选方案2:

{
  "_id": "test",
  "type": "pipe",
  "source": {
    "type": "embedded",
    "entities": [{
      "_id": "test",
      "a": 1,
      "b": null,
      "c": 2,
      "d": null
    }]
  },
  "transform": {
    "type": "dtl",
    "rules": {
      "default": [
        ["copy", "*"],
        ["remove",
            ["filter",
              ["is-null",
                ["path", "_.", "_T."]
              ],
              ["keys", "_T."]
            ]
        ]
      ]
    }
  }
}

备选方案3:

{
  "_id": "test",
  "type": "pipe",
  "source": {
    "type": "embedded",
    "entities": [{
      "_id": "test",
      "a": 1,
      "b": null,
      "c": 2,
      "d": null
    }]
  },
  "transform": {
    "type": "dtl",
    "rules": {
      "default": [
        ["copy", "*"],
        ["remove",
          ["map",
            ["first", "_."],
            ["filter",
              ["is-null",
                ["last", "_."]
              ],
              ["items", "_T."]
            ]
          ]
        ]
      ]
    }
  }
}

结果:

{
  "_id": "test",
  "type": "pipe",
  "source": {
    "type": "embedded",
    "entities": [{
      "_id": "test",
      "a": 1,
      "b": null,
      "c": 2,
      "d": null
    }]
  },
  "transform": {
    "type": "dtl",
    "rules": {
      "default": [
        ["copy", "*"],
        ["remove",
          ["map",
            ["nth", 0, "_."],
            ["filter",
              ["is-null",
                ["nth", 1, "_."]
              ],
              ["items", "_T."]
            ]
          ]
        ]
      ]
    }
  }
}