如何在Apache骆驼中将CSV转换为JSON

时间:2019-04-30 22:40:40

标签: java apache-camel

我能够在骆驼绑定的帮助下将csv转换为pojo。但是我需要轻松地将字符串转换为json吗?

我可以分割字符串。但是有什么有效的方法吗?

我的pojo课堂:-

String samples=exchange.getIn().getBody(String.class);

String[] strings=samples.split("}");
System.out.println(strings[0]);
for(String strings1:strings)
{
    String[] strings2=strings1.split("'");
    for(int i=0;i<strings2.length;i++)
    {
        if(i%2==1) {
            System.out.println(strings2[i]);
        }
    }
}
//Is there is efficient method we can do to convert the String to list of json. Assuming csv contains multiple record

处理器类:-

public class SimpleRouteBuilder extends RouteBuilder {
    private final BindyCsvDataFormat bindy=new BindyCsvDataFormat(com.company.model.Sample.class);;
    @Override
    public void configure()  {

      from("file:/path/?fileName=CCO_SUMMARY_20190315_165800 copy.csv&noop=true").unmarshal(bindy).process(new MyProcessor()).
               to("file:/path/?fileName=akshay.txt");

    }
}

Route Builder:-

/ns0:domain/ns0:server[ns0:machine='server2']

渴望知道是否有任何有效的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

.json()

请参见camel json data format,即:.json().log("${body}")

例如,在您的方案中:

from("file:/path/?fileName=CCO_SUMMARY_20190315_165800 copy.csv&noop=true")
    .unmarshal(bindy)
    .marshal()
    .json(JsonLibrary.Jackson).log("${body}")
    .to("file:/path/?fileName=akshay.txt");

其中json(JsonLibrary.Jackson)强制使用jackson库进行转换。

答案 1 :(得分:0)

  1. 您可以使用camel bindy t unmarshal csv到POJO列表
  2. 如果需要,根据输出格式进行映射
  3. 在 Came 路由中使用 Jacson o Gson 编组映射数据。
    from("file:/input/path/?noop=true")
    .unmarshal(bindy)
    .marshal()
    .json(JsonLibrary.Jackson).log("${body}")
    .to("file:/path/?fileName=test.txt");