如何将对象序列化为JSON?

iezvtpos  于 2022-10-01  发布在  Java
关注(0)|答案(1)|浏览(186)

我有一个要序列化为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;
            }
        }
fzsnzjdm

fzsnzjdm1#

为了在Java中轻松地将对象序列化为json,我建议使用gson库。

Gson gson = new Gson();
gson.toJson(events);

然后,您可以使用以下命令将其转换回Java对象

List<Event> events = gson.fromJson(string, Event.class);
<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>

相关问题