Mysql 如何创建动态json数据以命中rest客户端
我是数据集成工具Pentaho的初学者 我的数据库表将所有列放在一起。现在我想从该表数据创建一个JSON,以便访问我的REST客户机 我的REST客户端像这样接受JSON,所以我需要准备同样的内容Mysql 如何创建动态json数据以命中rest客户端,mysql,etl,pentaho,pentaho-data-integration,pdi,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",
{
"firstName" : "xyz",
"lastName" : "sdf",
"birthDate" : "1977-07-07",
"email" : "hj@dev4life.com",
"phones" : [ {
"number" : "123456",
"phoneType" : "PRIMARY"
} ]
}
从表格数据结构创建JSON的最佳方法是通过Javascript步骤。JSON输入的工作方式是相反的:给定一个JSON数据字段,提取单个值。您几乎完成了JSON输出步骤。问题在于JSON输出步骤不能很好地处理嵌套的数据结构,因此您可能希望分别处理
phones
和其他信息,然后合并结果
以下是处理任务的KTR示例:
JSON输出步骤:处理电话 在第一个JSON输出步骤中,设置以下内容 在
字段选项卡
下,添加两个字段:数字
和电话类型
。此步骤后的新字段phones
为:
{"phones":[{"number":123456.0,"phoneType":"PRIMARY"}]}
JSON输出步骤: 执行与上述步骤类似的操作,但以下操作除外:
- 在General选项卡中,设置Json bloc name=
,Output Value=data
outputValue
- 在字段选项卡中,添加字段
、名
、姓
和出生日期
电子邮件
outputValue
的新字段是:
{"data":[{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com"}]}
注意:您不应该在此处检索电话并将其添加到JSON输出中,因为嵌套数据结构将在最终输出中成为单个字符串值
JSON输入步骤:检索$.data[0] 如步骤名称中所示,我们使用JSON输入步骤从字段
outputValue
检索$.data[0],因此它变成:
{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com"}
- 在文件选项卡中:选择
并选择字段=源来自上一步
输出值
- 在字段选项卡中,添加一个新字段:Name=
和Path=rest\u client\u data
$.data[0]
在字符串步骤中替换:合并电话 使用
Replace in string
步骤合并两个JSON字符串:phones
和rest\u client\u data
。
基本上,它用一个逗号替换手机的前大括号{
,然后用更新的手机
替换剩余客户数据的后大括号}
选择值步骤 仅保留所需字段:
rest\u client\u数据
{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com","phones":[{"number":123456.0,"phoneType":"PRIMARY"}]}
欢迎来到SO。请澄清,你的问题是什么?嗨@Dmitry Popov我的问题是你的表中有一些数据,例如姓名:没有关系的雇员雇员姓名雇员地址1雇员城市雇员密码如果我使用pentaho的直接jsoninput选项,我得到的json如下{“数据”:[{“雇员姓名”:“sam”,“employee_addresline1”:“CB-124 street lory”,“employee_city”:“NY”,“employee_pincode”:“15585”}我可以使用数据值来加热我的rest客户端,但是我需要这样的json{“employee_name”:“sam”,“address”:{“employee_addresline1”:“CB-124 street lory”,“employee_city”:“NY”,“employee_pincode”:“15585”}对于复杂的JSON结构,最好使用修改后的Java脚本值步骤。在Pentaho Javascript中使用迭代器时要小心,迭代器的工作原理是一样的,但它们的“执行”不一样。嗨,如果您觉得有答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将重点放在较老的SO w上他仍然没有答案。