我是数据集成工具Pentaho
的初学者。
我的数据库表将所有列放在一起。现在,我想根据该表数据创建一个JSON,以便访问我的REST客户端。
我的REST客户端接受这样的JSON,因此我需要准备相同的内容。
{
"firstName" : "xyz",
"lastName" : "sdf",
"birthDate" : "1977-07-07",
"email" : "hj@dev4life.com",
"phones" : [ {
"number" : "123456",
"phoneType" : "PRIMARY"
} ]
}
答案 0 :(得分:0)
从表格数据结构创建JSON的最佳方法是通过Javascript步骤。 JSON输入的作用是相反的:给定JSON数据字段,提取单个值。
答案 1 :(得分:0)
您已经完成了 JSON Output
步骤。问题是 JSON Output 步骤不能很好地处理嵌套的数据结构,因此您可能要分别处理phones
和其他信息,然后合并结果。
下面是处理您的任务的示例KTR:
在Fields Tab
下,添加两个字段:number
和phoneType
。此步骤之后的新字段phones
为:
{"phones":[{"number":123456.0,"phoneType":"PRIMARY"}]}
执行与上述步骤类似的操作,不同之处在于:
- 在常规标签中,设置 Json集团名称 =
data
,输出值 =outputValue
- 在“ 字段”标签中,添加字段
firstName
,lastName
,birthDate
和
此步骤中添加的名为outputValue
的新字段是:
{"data":[{"firstName":"himanshi","lastName":"joshi","birthDate":"1997-07-24","email":"hj@test.com"}]}
注意:您不应在此处检索电话并将其添加到JSON输出中,因为嵌套的数据结构将在最终输出中成为单个String值。
如步骤名称中所标记,我们使用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字符串:phones
和rest_client_data
。
基本上,它用{
替换了电话的前大括号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"}]}