我有一个要序列化为json的对象列表。我使用以下代码来完成此操作:
private ByteBufferOutputStream serializeEvents(List<Event> events){
final ByteBufferOutputStream outputStream = new ByteBufferOutputStream(1024, true, false);
try{
for (Event event : events) {
Json.writeValueAsToOutputStream(event, outputStream);
outputStream.write('n');
}
return outputStream;
}
catch (Exception e){
log.error("Error serializing data", e);
return null;
}
}
它按预期工作,但在这种情况下,如果出现异常,整个事件列表将被丢弃。我想要的是,如果事件无法序列化,则跳过任何单个事件。另外,这些是json行,由‘\n’分隔,因为我正在将流上传到S3,并且希望可由Athena查询。
final ByteBufferOutputStream serializedEvent = serializeEvents(events);
if (serializedEvent != null) {
try {
s3Client.putObject(objectRequest, RequestBody.fromByteBuffer(serializedEvent.toByteBuffer()));
return true;
} catch (S3Exception e) {
log.error("Failed to send raw data events to S3", e);
return false;
}
}
1条答案
按热度按时间fzsnzjdm1#
为了在Java中轻松地将对象序列化为json,我建议使用gson库。
然后,您可以使用以下命令将其转换回Java对象