Apache camel 定义输出类型
我在spring中使用camel xmljson组件将xml转换为json。 我的camel上下文中有下一个代码:Apache camel 定义输出类型,apache-camel,Apache Camel,我在spring中使用camel xmljson组件将xml转换为json。 我的camel上下文中有下一个代码: <dataFormats> <xmljson id="xmljson" forceTopLevelObject="false"/> </dataFormats> <route id="LCG-Producer" autoStartup="false"> <from uri="activemq:to_in"/&g
<dataFormats>
<xmljson id="xmljson" forceTopLevelObject="false"/>
</dataFormats>
<route id="LCG-Producer" autoStartup="false">
<from uri="activemq:to_in"/>
<marshal ref="xmljson"/>
<to uri="activemq:to_out"/>
</route>
字段“entero1”作为字符串生成,它是一个整数,我的意思是,我需要该输出(不带“”):
有没有办法定义数据格式?我已经检查了XmlJsonDataFormat的源代码,我想这是不可能的。 但是,您可以使用相同的序列化程序使您成为我们的处理器 例如: (免责声明:代码没有效率,它只是给你一些想法)
我已经检查了XmlJsonDataFormat的源代码,我想这是不可能的。 但是,您可以使用相同的序列化程序使您成为我们的处理器 例如: (免责声明:代码没有效率,它只是给你一些想法)
根据本文档,xmlserializer将所有数据视为字符串,除非在xml元素上指定了“type”属性,例如:
<example>
<cadena1>aaaaaaa</cadena1>
<entero1 type="number">1511</entero1>
</example>
AAAAAAAA
1511
根据本文档,xmlserializer将所有数据视为字符串,除非在xml元素上指定了“type”属性,例如:
<example>
<cadena1>aaaaaaa</cadena1>
<entero1 type="number">1511</entero1>
</example>
AAAAAAAA
1511
{
"cadena1": "aaaaaaa",
"entero1":1511
}
@Override
public void process(Exchange exchange) throws Exception {
XMLSerializer serializer = new XMLSerializer();
JSON json=serializer.read(exchange.getIn().getBody(String.class));
StringWriter writer=new StringWriter();
JsonConfig jsonConfig=new JsonConfig();
jsonConfig.registerJsonValueProcessor("entero1", new JsonValueProcessor() {
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return new BigDecimal(value.toString());
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
return new BigDecimal(value.toString());
}
});
JSONSerializer.toJSON(json, jsonConfig).write(writer);
writer.close();
exchange.getIn().setBody(writer.toString());
}
<example>
<cadena1>aaaaaaa</cadena1>
<entero1 type="number">1511</entero1>
</example>