jsonlines 在数据分析处理以及批量json 处理中是比较常用的,以下是基于jackson 的处理
场景说明
基于jackson 读取以及生成jsonlines
参考代码
jsonlines 格式
{"0":"ddd","1":"11","2":"111","3":"111"}
{"0":"ddd","1":"12","2":"112","3":"112"}
{"0":"ddd","1":"13","2":"113","3":"113"}
- 读取
public static void readJsonLines() throws IOException {
InputStream stream = Application.class.getClassLoader().getResourceAsStream("demoapp22.ldjson");
JsonMapper reader= JsonMapper.builder().build();
MappingIterator<JsonNode> items = reader.readerFor(JsonNode.class).readValues(stream);
while (items.hasNextValue()){
System.out.println(items.nextValue());
}
}
- 生成
public static void writeExcelContent2JSONLines2(List<Object> input) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
try (OutputStream fileOutputStream = new FileOutputStream("demoapp22.ldjson")) {
try (SequenceWriter seq = objectMapper.writer()
// withRootValueSeparator 此处是核心,需要符合jsonlines的格式,数据就是一个pojo
.withRootValueSeparator("\n").writeValues(fileOutputStream)) {
input.forEach(new Consumer<Object>() {
@SneakyThrows
@Override
public void accept(Object s) {
seq.write(s);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
说明
以上基于jackson 进行jsonlines 的读取以及写入操作,对于需要集成jsonlines 的可以参考