java - 如何反序列化未知类的对象

  显示原文与译文双语对照的内容
0 0

我需要打印序列化的Java对象的内容( 比如 。 从缓存中检索到 java.io.Serializable POJO ),而不知道它的类。

我并不需要使用典型的ObjectInputStream实例化新对象,我只需要获取对象的简单可读表示( preferrably JSON ),而不用加载类路径中的类。

换句话说,我需要将字节 [] ( 原始序列化对象) 转换为JSON字符串而不重新实现 ObjectInputStream 。

时间: 原作者:

0 0

简短的回答是:没有任何问题。 如果Java序列化是专有格式,你必须实现 ObjectInputStream 功能,并且必须实现该格式的规范。

但是,在一定程度上,不应该比读取二进制格式更困难;但是你需要记住二进制格式可以很容易读,也可以很难理解。 我将java序列化格式放在两者之间,但更接近于简单的格式。

这种困难在于在读取它的值( 在类定义中有这样的信息时),即使你不使用类定义,也有助于类类中的原始类。 或者,如果你能够以不同的方式提供元数据,你的问题就。

更新:在写完上令人沮丧的答案之后,我发现这个有用的问题: 用于浏览Java序列化对象对象的 GUI工具。

...