树状数据结构的转换语言

时间:2016-10-11 09:47:18

标签: database xslt tree migration

我正在寻找一种适合描述树状应用程序数据迁移的语言。

我们有一个应用程序将其数据保存为“对象”树。如果你试图将它表达为JSON,你可以得到类似的东西:

{
    "ROOT_OBJECT": {
        "@parameter1": 42,
        "@parameter2": "asdf",

        "CHILD_OBJECT": {
            "@parameter1": {
                "@subparameter1": 1
            },
            "@parameter2": [ "one", "two" ],

            "GRANDCHILD_OBJECT": {
                "@parameter1": 42
            }
        }
    }
}

数据结构随着时间的推移而发展。新的应用程序版本可能需要添加一些新参数,删除一些旧参数,将参数从一个对象移动到另一个对象,合并或拆分对象等。

这样的数据迁移可以用像Java或JavaScript这样的命令式语言编写(它或多或少都是现在的方式),但我们的目的是转向声明性的。

目前我们正在开发一个使用XSLT的实现:它将树转换为DOM树,应用XSL转换,然后将结果转换回原始树格式。

我想知道是否有另一种方法可以进行此类数据转换。理想情况下,候选语言已经有了Java和JavaScript的实现,或至少在JavaScript中。

1 个答案:

答案 0 :(得分:0)

TreeOps可视工具(https://github.com/treeops/treeops)转换树(JSON / XML / CSV)并生成Java代码,但是尚不支持JavaScript。 如果Java在后端可用,则可以在那里运行它。

TreeOps定义了一组数据树转换,以简化典型的数据操作:

  1. 过滤和删除不相关的数据
  2. 沿树重命名和移动节点
  3. 展平和展平以在树格式和表格格式之间进行转换
  4. 在所选节点下使用正则表达式更改节点
  5. 可以保存转换,以后再重新应用。 TreeOps可以毫不费力地生成Java类,该类将读取转换后的数据并将其表示为简单的POJO(普通的Java对象)。