我想聚合一个Json文件。 我使用Talend来做这个,所以我必须在java中进行这种转换。 这是订单文件。
{
"order" : [{
"order_line" : {
"name" : "Pains au lait aux pépites de chocolat, 350 g",
"unit_price" : 2.39,
"ean" : "3256540011465",
"price" : 4.78,
"quantity" : 2,
"date" : "-0001-11-30T00:00:00+0009",
"ref" : "23806"
}
}, {
"order_line" : {
"name" : "Eau de montagne, 6 x 1.5 L",
"unit_price" : 1.99,
"ean" : "3596710383931",
"price" : 1.99,
"quantity" : 1,
"date" : "-0001-11-30T00:00:00+0009",
"ref" : "117797"
}
}, {
"order_line" : {
"name" : "Eau de montagne, 6 x 1.5 L",
"unit_price" : 1.99,
"ean" : "3596710383931",
"price" : 1.99,
"quantity" : 1,
"date" : "-0001-11-30T00:00:00+0009",
"ref" : "117797"
}
}, {
"order_line" : {
"name" : "Pains au lait aux pépites de chocolat, 350 g",
"unit_price" : 2.39,
"ean" : "3256540011465",
"price" : 4.78,
"quantity" : 2,
"date" : "-0001-11-30T00:00:00+0009",
"ref" : "23806"
}
}
]
}
我的文件包含订单中的项目,但一式两份。
如果标签“name”,“ean”,“ref”,“unit_price”相同,我想在同一个“order_line”中添加数量,并删除“order_line”一式两份。
我想要这个:
{
"order" : [{
"order_line" : {
"name" : "Pains au lait aux pépites de chocolat, 350 g",
"unit_price" : 2.39,
"ean" : "3256540011465",
"price" : 4.78,
"quantity" : 4,
"date" : "-0001-11-30T00:00:00+0009",
"ref" : "23806"
}
}, {
"order_line" : {
"name" : "Eau de montagne, 6 x 1.5 L",
"unit_price" : 1.99,
"ean" : "3596710383931",
"price" : 1.99,
"quantity" : 2,
"date" : "-0001-11-30T00:00:00+0009",
"ref_fo" : "117797"
}
}
]
}
我知道如何使用XSL进行XML操作。 但我不知道如何在Camel Java中做到这一点......你知道吗?
答案 0 :(得分:0)
这可能不是您想要的解决方案。
答案 1 :(得分:0)
我假设您正在使用talend ESB(中介透视图),因此如果您知道如何使用XSL执行此操作,最简单的方法是在cMessagingEndpoint中使用XSL camel组件,并使使用XSLT进行转换。 在cMessaging端点中,您只需使用filepath配置URI字段即可。
" XSLT:文件:// C:/temp/xslt.xslt"
然后在输入组件后链接它。