我在骆驼上有一项休息服务,该服务咨询了另一项肥皂服务,肥皂响应使Pojo unmarshal unmarshal,然后我将元帅与JSON对象合并。在控制台中,一切都是完美的,但是在服务的输出中,我看到了带有逃生字符或字节数组的字符串
我试图返回一个jsonobject,strings,byte [],但是我沿途缺少一些东西,我认为这是JSON序列化
的问题 JacksonDataFormat jacksonDataFormat = new JacksonDataFormat();
jacksonDataFormat.setPrettyPrint(true);
from("direct:spliting")
.log("Start Spliting")
.setBody(xPath)
.log("Split: ${body}")
.unmarshal(new CustomUnmarshall())
.marshal(jacksonDataFormat)
.convertBodyTo(String.class)
.setHeader("Content-Type", simple("application/json"))
.removeHeader("ResponseContext")
.log("Marshal: ${body}")
.end();
在控制台中,结果还可以:
{"def":null,"v":{"a":4877,"c":1},"sa":[{"kv":[{"ar":null,"v":["C000000002"],"k":"campaignCode"},{"ar":null,"v":["0.75"],"k":"propension"},{"ar":null,"v":["ATM"],"k":"canal"}, ...
,但在Postman中的回应是:
"{rn "sa" : [ {rn "kv" : [ {rn "k" : "campaignCode",rn "v" : [ "C000000001" ],rn "ar" : nullrn }, {rn "k" : "propension",rn "v" : [ "0.5" ],rn "ar" : nullrn }, {rn "k" : "canal",rn "v" : [ "Sucursal" ],rn "ar" : nullrn }, {rn "k" : "offerCode",rn
将bindingmode选项设置为" OFF",以固定通过Camel-Rest提供JSON字符串的逃脱。也许这会有所帮助(示例没有显示如何将数据提供给Postman。
我在这里并没有真正看到问题。邮递员的输出是一个编组为字符串的JSON。这就是您在路线中所做的。
由于您有setPrettyPrint(true)
,您的字符串中有很多CR-LF(行分隔符(。如果您禁用漂亮的印刷品,您可以摆脱它们。
查看杰克逊元帅/Unmarshal的这款骆驼Unitest,带有和没有漂亮的打印,以将格式与您的结果进行比较。
使用Jackson Method
objectMapper.writeValueAsString(yourJson);