【发布时间】:2013-10-16 00:13:36
【问题描述】:
我需要打印一个序列化的 Java 对象的内容(例如从缓存中检索的 java.io.Serializable POJO),而不知道它的先验类。
更具体地说,我不需要使用经典的 ObjectInputStream 实例化新对象,我只需要获取对象的简单人类可读表示(最好是 JSON),而无需在类路径中加载其类。
换句话说,我需要将 byte[](原始序列化对象)转换为 JSON 字符串,而无需重新实现 ObjectInputStream。
【问题讨论】:
-
您要反序列化的类是否在类路径中?
-
如果在类路径中没有对象的类,就无法反序列化对象。对象的类别是什么?如果需要,那么您应该将 JSON 存储在缓存中,而不是序列化的 Java 对象。
-
@JBNizet:完全正确。但是,我认为@tieTYT 正试图找出问题的背景。也许这个要求背后的真正原因是有一些遗留的
.ser文件需要在类路径中不再有类(或该类的那个版本)的情况下进行检查。这需要一种与将对象转换为 JSON 完全不同的方法。 -
@CostiCiudatu:我的评论是针对 OP,而不是针对 tieTYT。 Op 说他想反序列化对象“而不在类路径中加载它的类”,这就是为什么我告诉他这是不可能的。
-
@JBNizet:我现在明白了。好吧,“不可能”有点过分了。不平凡也许是一个更合适的标签......
标签: java json serialization