我如何创建动态json数据以击中我的其余客户端

时间:2019-07-19 10:06:44

标签: mysql etl pentaho pentaho-data-integration pdi

我是数据集成工具Pentaho的初学者。

我的数据库表将所有列放在一起。现在,我想根据该表数据创建一个JSON,以便访问我的REST客户端。

我的REST客户端接受这样的JSON,因此我需要准备相同的内容。

{
 "firstName" : "xyz",
  "lastName" : "sdf",
  "birthDate" : "1977-07-07",
  "email" : "hj@dev4life.com",
  "phones" : [ {
    "number" : "123456",
    "phoneType" : "PRIMARY"
  } ]
}

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

从表格数据结构创建JSON的最佳方法是通过Javascript步骤。 JSON输入的作用是相反的:给定JSON数据字段,提取单个值。

答案 1 :(得分:0)

您已经完成了 JSON Output 步骤。问题是 JSON Output 步骤不能很好地处理嵌套的数据结构,因此您可能要分别处理phones和其他信息,然后合并结果。

下面是处理您的任务的示例KTR:

enter image description here


JSON输出步骤:处理电话

在第一个JSON Output步骤中,设置以下内容 enter image description here

Fields Tab下,添加两个字段:numberphoneType。此步骤之后的新字段phones为:

{"phones":[{"number":123456.0,"phoneType":"PRIMARY"}]}

JSON输出步骤:

执行与上述步骤类似的操作,不同之处在于:

  
      
  • 常规标签中,设置 Json集团名称 = data输出值 = outputValue
  •   
  • 在“ 字段”标签中,添加字段firstNamelastNamebirthDateemail
  •   

此步骤中添加的名为outputValue的新字段是:

{"data":[{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com"}]}

注意:您不应在此处检索电话并将其添加到JSON输出中,因为嵌套的数据结构将在最终输出中成为单个String值。


JSON输入步骤:检索$ .data [0]

如步骤名称中所标记,我们使用JSON输入步骤从字段outputValue中检索$ .data [0],因此它变为:

{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com"}
  
      
  • 文件标签中:选择Source is from a previous step,然后选择选择字段 = outputValue
  •   
  • 在“ 字段”标签中,添加一个新字段: Name = rest_client_data Path = $.data[0]
  •   

替换为字符串步骤:合并电话

使用Replace in string步骤合并两个JSON字符串:phonesrest_client_dataenter image description here

基本上,它用{替换了电话的前大括号comma,然后用更新后的}替换了rest_client_data的尾随phones


选择值步骤

仅保留必填字段:rest_client_data

{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com","phones":[{"number":123456.0,"phoneType":"PRIMARY"}]}