前言 项目里存在一个这样的系统,它的主要功能类似于适配器,将一个系统的异构数据进行转化,处理成标准的数据流,交给另一个平台系统。 当然,也可以反过来理解,有一个平台级系统,需要从多种数据源(系统)中采集数据,每种数据源的数据结构都不相同,需要有个中间人进行转化。这个系统就承担了这样的角色。 这样的架构虽然降低了平台系统的复杂度,使每个适配器只专注于某一个数据源的对接。但由于平台系统从数据源获取数据是通过HTTP请求的方式完成的,一般来说可能涉及十几到几十个接口的对接。所以适配器的内部转化逻辑的代码编写也存在较大的工作量。 而每个适配器的转化逻辑大致是相同的,主要有几个方面: 字段名称转化:如将数据源的name字段转化为平台的username 枚举转化:男转化为M, 女转化为F 数据层级转化:平台的数据结构为user.username, 数据源的数据结构为user.base.username, username字段所在的层级不同 数据结构转化:平台的数据结构为对象,数据源的数据结构为数组 当然还有很多等等等等,不再列举 思路 为了解决以上的问题,我的想法是借鉴类Excel的方式,由于平台的数据结构是确定的,那么我只要编写一定的函数,将数据源的数据结构配置起来,系统通过解析配置的方式进行数据转化,比如 name=#usernamesex=if(eq(#gender,'男'),'M', 'F')user.username=#user.base.username #代表取值 .表示层级 如{ user: { name: “张三”}}写作user.name if(true of false, 真时的返回值,假时的返回值) eq(value1, value2), 判断value1和value2是否相等,返回boolean值 if(eq(#sex,‘男’),‘M’, ‘F’): 当#ge...