Java-逐行从S3对象读取(JSON)数据

Java-逐行从S3对象读取(JSON)数据,java,amazon-s3,inputstream,jsonlines,Java,Amazon S3,Inputstream,Jsonlines,我有一个包含JsonL行的S3对象。我想在Java中逐行阅读这个对象,这样我就可以递归地将每一行(即每一个json)解析为POJO,并最终将对象内容转换为POJO列表 据我所知,AmazonS3.getObject().getObjectContent()将流返回到对象的内容。我的下一步是读取一行并将其转换为字符串,然后将其解析为POJO。我不知道如何在这个InputStream上操作,以保持获取字符串格式的下一行 样本数据: {"key1":"val", "key2":"val1", "key

我有一个包含JsonL行的S3对象。我想在Java中逐行阅读这个对象,这样我就可以递归地将每一行(即每一个json)解析为POJO,并最终将对象内容转换为POJO列表

据我所知,
AmazonS3.getObject().getObjectContent()
将流返回到对象的内容。我的下一步是读取一行并将其转换为字符串,然后将其解析为POJO。我不知道如何在这个
InputStream
上操作,以保持获取字符串格式的下一行

样本数据:

{"key1":"val", "key2":"val1", "key3":"val2"}
{"key1":"val3", "key2":"val4", "key3":"val5"}
{"key1":"val6", "key2":"val7", "key3":"val8"}

您有很多将InputStream转换为字符串的选项。看一看


您有很多将InputStream转换为字符串的选项。看一看


如果您负担得起,您可以使用jackson库并简化您的实现:

Maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

要将此逻辑应用于每一行,请按照说明在每一行上循环,并应用相同的readValue方法,该方法也会重载字符串。

如果您负担得起,您可以使用jackson库并简化实现:

Maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

要将此逻辑应用于每一行,请按照说明在每一行上循环,并应用相同的readValue方法,该方法也会重载字符串。

我知道如何将
InputStream
转换为字符串。实际上,我的目标是将其转换为
List
,其中每个元素都是S3对象中的一行。您知道字符串的行分隔符是什么吗?我添加了示例数据。我想知道使用
InputStream
创建
BufferedStreamReader
然后使用
readLine()
是否可以实现这一点。我为行分隔符“\n”添加了一个示例。如果您的字符串是压缩JSON,那么该示例将不起作用。我确实知道如何将
InputStream
转换为字符串。实际上,我的目标是将其转换为
List
,其中每个元素都是S3对象中的一行。您知道字符串的行分隔符是什么吗?我添加了示例数据。我想知道使用
InputStream
创建
BufferedStreamReader
然后使用
readLine()
是否可以实现这一点。我为行分隔符“\n”添加了一个示例。如果您的字符串是一个紧凑的JSON,那么这个示例将不起作用。这是我将对每一行执行的操作,因为每一行都是一个JSON对象。我不确定这将如何处理
InputStream
实例本身。这是我将为每一行执行的操作,因为每一行都是一个json对象。我不确定这将如何处理
InputStream
实例本身。
ObjectMapper mapper = new ObjectMapper();
MyObject obj = mapper.readValue(inputStream, MyObject.class);