斯潘8
斯潘4
您好:我有一个Oracle查询,需要生成为JSON文件。但是,查询包含输出所需的所有功能,给定项目名称可以有多个地址。对于有多个地址的项目,我需要重复以下属性:street,卡吉西德,地址ID
我在JSontemplater中有这个结构,但是当一个项目包含多行(地址不同)时,它多次生成下面的所有元素。我试图配置转换器的“sub”特性,但我必须只向根目录发送一个项目查询,并向sub发送一个项目可能的所有地址变化。但是我可以想办法把这两个联系起来,这样就可以工作了。
{
“totalinvestment”:fme:get attribute(“totalinvestment”),
“squarefootageretail”:fme:get属性(“squarefootageretail”),
“squarefootageoffice”:fme:get属性(“squarefootageoffice”),
“squareFootagManufacturing”:fme:get属性(“squareFootagManufacturing”),
“recordtype”:fme:get属性(“recordtype”),
“projectstage”:fme:get属性(“projectstage”),
“projectname”:fme:get属性(“projectname”),
“projectid”:fme:get属性(“projectid”),
“projectdescription”:fme:get属性(“projectdescription”),
“projectdate”:fme:get属性(“projectdate”),
“属性地址”:。[{
“street”:fme:get属性(“street”),
“cagisid”:fme:get属性(“cagisid”),
“addressID”:fm:get属性(“addressID”)
}
“programtype”:fme:get属性(“programtype”),
“numberofUnits”:fme:get属性(“numberofUnits”),
“numberofsqft”:fme:get属性(“numberofsqft”),
“numberofparkingspaces”:fme:get属性(“numberofparkingspaces”),
“numberofhotelrooms”:fme:get属性(“numberofhotelrooms”),
“邻居”:fme:get属性(“邻居”),
“jobsretained”:fme:get属性(“jobsretained”),
“JobsCreated”:fme:get属性(“JobsCreated”),
“developer”:fme:get属性(“developer”),
“类别”:fme:get属性(“类别”),
“cagisid”:fme:get属性(“cagisid”),
“地址”:fme:get属性(“地址”)。
}
如果除了地址以外的所有属性在所有行中都具有相同的值,比如这个简化示例,
项目ID | 项目名称 | 街道 | 卡吉西德 |
一百 | 项目A | 福 | 一 |
一百 | 项目A | 酒吧 | 二 |
一百 | 项目A | 福巴 | 三 |
一种可能的方法是选择一行并将其发送到根端口,然后将所有行发送到jContempleter的子端口,然后将使用子表达式生成的JSON对象聚合为根表达式中的JSON数组。
根表达式:
“projectid”:fme:get属性(“projectid”),“projectname”:fme:get属性(“projectname”),“propertyaddresses”:[fme:流程功能(“sub”)]
子表达式:
“street”:fme:get属性(“street”),“cagisid”:fme:get属性(“cagisid”)
结果:
“projectid”:“100”,“projectname”:“项目A”,“propertyaddresses”:[“street”:“foo”,“cagisid”:“1”,“street”:“酒吧”,“cagisid”:“2”,“street”:“foobar”,“cagisid”:“3”]
如果源数据集中有两个或多个项目,在采样器中将project id属性设置为group by参数,在jsonTemplater中将project id属性设置为group sub features by参数。
希望这有帮助。
?2019安全亚搏在线软件公司|合法的