JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Java修炼终极指南:125 将对象序列化为字符串

wys521 2024-11-03 16:55:36 精选教程 22 ℃ 0 评论

在上一个问题中,您了解了如何将对象序列化为字节数组。如果我们对字节数组稍作处理,就可以获得序列化的字符串表示。例如,我们可以依赖java.util.Base64对字节数组进行编码以转换为字符串,如下所示:

public static String objectToString(Serializable obj)
              throws IOException {
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
       
 try (ObjectOutputStream ois = new ObjectOutputStream(baos)) {
  ois.writeObject(obj);
 }
       
 baos.close();
 return Base64.getEncoder()
              .encodeToString(baos.toByteArray());
}

可能的输出看起来像这样:

rO0ABXNyABZtb2Rlcm4uY2hhbGxlbmdlLk1lbG9u2WrnGA2MxZ4CAAJGAAZ3ZWlnaHRMAAR0eXBldAASTGphdmEvbGFuZy9TdHJpbmc7eHBFHEAAdAADR2Fj

字符串 melonSer 是通过以下方式获得的:

String melonSer = Converters.objectToString(melon);       

逆过程依赖于Base64解码器,如下所示:

public static Object stringToObject(String obj)
              throws IOException, ClassNotFoundException {
 byte[] data = Base64.getDecoder().decode(obj);
 try ( ObjectInputStream ois = new ObjectInputStream(
       new ByteArrayInputStream(data))) {
  return ois.readObject();
 }
}

调用这个方法很简单:

Melon melonDeser = (Melon) 
      Converters.stringToObject(melonSer);      

melonDeser 对象是对之前字符串进行反序列化的结果。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表