我有一个文件作为输入,其中包含 json 数组:
[ {
...,
...
},
{
...,
...
},
{
...,
...
}
]
我想在不破坏 Spring Batch 原则的情况下阅读它(与 FlatFileReader 或 XmlReader 相同的方式)
我没有找到任何方法来做到这一点,读者已经在 spring-batch 中实现了。
实现此阅读器的最佳方法是什么?
提前致谢
假设您想要建模StaxEventItemReader
因为您想要将 JSON 数组的每个项目作为 Spring Batch 中的项目读取,所以我建议这样做:
-
RecordSeparatorPolicy
- 你需要实现你自己的RecordSepartorPolicy
这表明您是否已读完全文。您还可以使用RecordSeparatoerPolicy#postProcess
清理开头和结尾[]
您需要处理逗号分隔符。
-
LineTokenizer
- 然后你会想要创建你自己的LineTokenzier
解析 JSON。我今天刚刚为一个项目开发一个代码,因此您可以使用该代码作为开始(认为它未经测试):
public class JsonLineTokenizer implements LineTokenizer {
@Override
public FieldSet tokenize(String line) {
List<String> tokens = new ArrayList<>();
try {
HashMap<String,Object> result =
new ObjectMapper().readValue(line, HashMap.class);
tokens.add((String) result.get("field1"));
tokens.add((String) result.get("field2")));
} catch (IOException e) {
throw new RuntimeException("Unable to parse json: " + line);
}
return new DefaultFieldSet(tokens.toArray(new String[0]), {"field1", "field2"});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)