当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Btch Delimiter输出复杂属性

潘兴朝
2023-03-14

我想处理XML文档并输出逗号分隔的输出。我正在使用Spring批处理链接-http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#xmlReadingWriting

具体来说,我使用StateVentitemReader读入XML,并使用FlatFileItemWriter进行编写,并配置了DelimitedLineAggregator。

我遇到的问题是,“fieldExtractor”bean BeanWrapperFieldExtractor将输出primitive属性(即primitive value String、int等)。我的一些属性类型很复杂。因此,使用这个in-the-box fieldExtractor,我只能打印对象指针,这是没有用的。

这篇文章建议扩展分隔符线聚合器来修改字段值-Spring Batch:具有BigDecimal格式的帕通字段提取器

看起来我必须这样做,并为每个“复杂”字段插入一个服务。该服务必须“递归地”遍历field对象以生成逗号分隔的字符串。

这听起来怎么样?你能分享任何有效的递归算法吗?

谢谢

更新:谢谢你,卢卡。以下是输入和期望输出的示例(对T形三通不准确)

https://drive.google.com/?tab=wo

共有1个答案

景宏朗
2023-03-14

也许你最好使用一个自定义类来扩展FieldExtractor,而不是DelimitedLineAggregator<根据spring的说法,这个类必须将一个对象转换成可以转换成字符串的小部分。如果你想控制场的顺序就更好了。

FieldExtractor:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/file/transform/FieldExtractor.html

 类似资料:
  • 我正在尝试将json转换为复杂数组。INVLOC的内部数组没有按照我想要的方式生成。 我的输入json是: 如果我能得到一些教程来理解Jolt的数组转换。

  • 使用放心,我们可以轻松执行GET,POST和其他方法。在下面的示例中,我们将 POST 发送到返回 JSON 响应的 API。 但是我需要创建具有复杂XML正文的POST请求。正文示例: 我该怎么做?提前感谢您

  • 我有一个,其中有和属性(以适当的JavaFX方式),我想创建一个,它将显示人员的名称,并反映列表和列表中单个对象的属性中的更改。这件事怎么做最好?有两个问题: 所以,最后,我确实有一种方法来做我想做的事情:在1中编写我自己的包装器,在2中使用一个自定义的单元工厂。我只是觉得这需要更多的工作,我认为这是一个比较普遍的情况。有没有更简单的方法让我错过了?

  • 在<code>go</code>中,标准包编码/json公开了<code>json。Unmarshal函数解析JSON。 可以在预定义中取消封送 JSON 字符串,也可以使用 并迭代意外 JSON 数据结构的结果。 也就是说,我无法正确解析复杂的 JSON。有人可以告诉我如何实现这一目标吗?

  • 问题内容: 我正在寻找一种解决方案,可以多路复用一些通道输出。 我有一个数据源,它是从我发送到单个通道的读取的。另一方面,我有一个从通道读取的websocket请求处理程序。现在,发生了两个客户端创建一个websocket连接的情况,它们均从同一通道读取,但每个客户端仅获得部分消息。 代码示例(简体): 现在,当两次被调用时,第二个调用仅返回在第一个调用中创建的通道,这将导致上述问题。 问题是:

  • 请建议阅读器和编写器的spring批处理配置。