我有一个简单的json文件,我正在尝试使用jolt进行转换并且遇到问题,因为我对jolt很新

时间:2017-03-02 19:14:51

标签: jolt

这就是我想要做的事情: 1.用姓名连接名字和姓氏 2.将id更改为employeeID并添加带有员工ID的前缀:emp_id 3.如果部门等于销售,则部门应为“SL” 4.如果部门等于销售,则部门应为“RET”

这是我的意见:

{
    "employees": [{
            "f_name": "tom",`
            "l_name": "smith",
            "id": "100",
            "department": "sales",
            "company": "ABC Intelligence"
        },

        {
            "f_name": "john",
            "l_name": "doe",
            "id": "102",
            "department": "returns",
            "company": "ABC Intelligence"
        }, {
            "f_name": "jane",
            "l_name": "doe",
            "id": "103",
            "department": "sales",
            "company": "ABC Intelligence"
        }
    ]
}

specs:
 [{
    "operation": "shift",
    "spec": {
        "employees": {
            "*": {

                "name": "=concat(@(1,f_name),' ',@(1,l_name))"


            }
        }
    }

},
 {
   "operation": "remove",
    "spec": {
      "employees": {
        "*": { 
          "f_name": "",
          "l_name": ""

      }
    }
  }
 }
]


desired output:

{
    "employees": [
        {
            "name": "tom smith",
            "employeeID": "emp_100",
            "department": "SL",
            "company": "ABC Intelligence"
        },
        {
            "name": "john doe",
            "employeeID": "emp_102",
            "department": "RET",
            "company": "ABC Intelligence"
        },
        {
            "name": "jane doe",
            "employeeID": "emp_103",
            "department": "SL",
            "company": "ABC Intelligence"
        }
    ]
}

我能够获得第一条规则,但仍然在与其他规则斗争。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

规格

[
  {
    "operation": "modify-default-beta",
    "spec": {
      // add the mapping of department name to code, so we can use it later
      "deptMap": {
        "sales": "SL",
        "returns": "RET"
      },
      "employees": {
        "*": {
          // build the fullName from the first and last names
          "name": "=concat(@(1,f_name),' ',@(1,l_name))",
          // build the employeeID
          "employeeID": "=concat(emp_,@(1,id))"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "employees": {
        "*": { // employees arrays
          // pass name, company, and employeeID thru
          "name": "employees[&1].name",
          "company": "employees[&1].company",
          "employeeID": "employees[&1].employeeID",
          // lookup the deparment code
          "department": {
            "*": { // value of dept
              // got up 5 levels, come back down the deptMap
              "@(4,deptMap.&)": "employees[&3].department"
            }
          }
        }
      }
    }
  }
]