【问题标题】:Unable to serialize convert java POJO class into a byte array无法序列化将 java POJO 类转换为字节数组
【发布时间】:2020-07-12 21:32:34
【问题描述】:

如何将 java POJO 类转换为字节数组,因为我想将对象保存到 S3 中的 gz 文件中

我得到了这个异常Caused by: java.io.NotSerializableException

    public byte[] compressData(User user) throws IOException {

            byte[] data;
            try(ByteArrayOutputStream byteStream = new ByteArrayOutputStream();) {
                try (GZIPOutputStream objectOutputStream = new GZIPOutputStream(byteStream);) {
                    try (ObjectOutputStream zipStream = new ObjectOutputStream(objectOutputStream);) {
                        zipStream.writeObject(user);
                    }
                    data = byteStream.toByteArray();
                } catch (Exception e) {
                    throw new IOException(e);
                }
            }
            return data;
}

【问题讨论】:

标签: java objectoutputstream gzipinputstream bytearrayinputstream


【解决方案1】:

你可以使用来自ApacheCommonslang 依赖的SerializationUtils.java

  1. 用于序列化

    byte[] data = SerializationUtils.serialize(**POJO_Object_Name**);
    
  2. 反序列化:

    POJO_Class_Name **POJO_Object_Name**  = SerializationUtils.deserialize(data)
    

【讨论】:

    【解决方案2】:
    private final Type userType = new TypeToken<User>() {}.getType();
    
    private final Gson = new Gson();
    
    compressData(gson.toJson(user,userType));
    
     public static byte[] compressData(String user) throws IOException {
    
            byte[] data;
            try(ByteArrayOutputStream byteStream = new ByteArrayOutputStream();){
                try(GZIPOutputStream zipStream = new GZIPOutputStream(byteStream);){
                    zipStream.write(data.getBytes(StandardCharsets.UTF_8));
                }
                data = byteStream.toByteArray();
            } catch(Exception e) {
                throw new IOException("Error while compressing the User record ", e);
            }
            return data;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-25
      • 2011-12-16
      • 2020-12-10
      • 2011-03-11
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多