首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将对象序列化为字符串

如何将对象序列化为字符串
EN

Stack Overflow用户
提问于 2008-09-25 16:53:07
回答 9查看 245.6K关注 0票数 157

我能够将一个对象序列化为一个文件,然后再次恢复它,如下面的代码片段所示。我想将对象序列化为字符串并存储到数据库中。有谁可以帮我?

代码语言:javascript
复制
LinkedList<Diff_match_patch.Patch> patches = // whatever...
FileOutputStream fileStream = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fileStream);
os.writeObject(patches1);
os.close();

FileInputStream fileInputStream = new FileInputStream("foo.ser");
ObjectInputStream oInputStream = new ObjectInputStream(fileInputStream);
Object one = oInputStream.readObject();
LinkedList<Diff_match_patch.Patch> patches3 = (LinkedList<Diff_match_patch.Patch>) one;
os.close();
EN

回答 9

Stack Overflow用户

发布于 2008-09-25 16:58:09

把数据写到ByteArrayOutputStream而不是FileOutputStream怎么样?

否则,您可以使用XMLEncoder序列化对象,持久化XML,然后通过XMLDecoder进行反序列化。

票数 12
EN

Stack Overflow用户

发布于 2017-06-02 19:54:42

Java8方法,将对象从字符串转换为字符串,灵感来自OscarRyz的answer。对于反/编码,需要并使用java.util.Base64

代码语言:javascript
复制
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Base64;
import java.util.Optional;

final class ObjectHelper {

  private ObjectHelper() {}

  static Optional<String> convertToString(final Serializable object) {
    try (final ByteArrayOutputStream baos = new ByteArrayOutputStream();
      ObjectOutputStream oos = new ObjectOutputStream(baos)) {
      oos.writeObject(object);
      return Optional.of(Base64.getEncoder().encodeToString(baos.toByteArray()));
    } catch (final IOException e) {
      e.printStackTrace();
      return Optional.empty();
    }
  }

  static <T extends Serializable> Optional<T> convertFrom(final String objectAsString) {
    final byte[] data = Base64.getDecoder().decode(objectAsString);
    try (final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data))) {
      return Optional.of((T) ois.readObject());
    } catch (final IOException | ClassNotFoundException e) {
      e.printStackTrace();
      return Optional.empty();
    }
  }
}
票数 5
EN

Stack Overflow用户

发布于 2008-09-25 17:01:02

将对象持久化为blob怎么样?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/134492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档