Apache骆驼带有逃生角色返回JSON



我在骆驼上有一项休息服务,该服务咨询了另一项肥皂服务,肥皂响应使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); 

最新更新