Java序列化到字符串

Java序列化到字符串,java,serialization,Java,Serialization,我有以下静态类型对象的声明: Integer typeId; //Obtaining typeId Object containerObject = ContainerObjectFactory.create(typeId); 工厂可以生产不同类型的容器对象,例如日期、整数、大十进制等 现在,在创建containerObejct之后,我需要将其序列化为String类型的对象,并使用hibernate将其存储到数据库中。我不打算提供对象关系映射,因为它与问题没有直接关系 我想做的是根据它的运行时

我有以下静态类型
对象的声明

Integer typeId;
//Obtaining typeId
Object containerObject = ContainerObjectFactory.create(typeId);
工厂可以生产不同类型的
容器对象
,例如
日期
整数
大十进制

现在,在创建
containerObejct
之后,我需要将其序列化为
String
类型的对象,并使用hibernate将其存储到数据库中。我不打算提供对象关系映射,因为它与问题没有直接关系


我想做的是根据它的运行时类型序列化
containerObject
,并在以后用它被序列化的类型对它进行序列化。有可能吗?为了这些原因,我可以使用
xml
-序列化吗?

有多种方法,但您需要自定义序列化方案,例如:

D|25.01.2015
I|12345
BD|123456.123452436

其中字符串的第一部分表示类型,第二部分表示数据。您甚至可以为此使用一些二进制序列化方案。

有多种方法,但您需要自定义序列化方案,例如:

D|25.01.2015
I|12345
BD|123456.123452436

其中字符串的第一部分表示类型,第二部分表示数据。您甚至可以为此使用一些二进制序列化方案。

有多种方法,但您需要自定义序列化方案,例如:

D|25.01.2015
I|12345
BD|123456.123452436

其中字符串的第一部分表示类型,第二部分表示数据。您甚至可以为此使用一些二进制序列化方案。

有多种方法,但您需要自定义序列化方案,例如:

D|25.01.2015
I|12345
BD|123456.123452436

其中字符串的第一部分表示类型,第二部分表示数据。您甚至可以为此使用一些二进制序列化方案。

有许多替代方案,您的问题相当广泛。你可以:

  • 使用,这是二进制的,然后编码它
  • 使用XML序列化库,例如
  • 使用JSON序列化库,例如
您提到的一个关键特性是需要将对象类型嵌入序列化数据中。原生Java序列化将类型嵌入到数据中,因此这是一个很好的候选者。然而,这是一把双刃剑,因为这会使数据变得脆弱——如果在将来某个时候更改了完全限定的类名,那么您将无法再反序列化该对象

另一方面,Gson不嵌入类型信息,因此必须同时存储JSON和对象类型才能反序列化对象


XML和JSON的优点是它们是文本格式,因此即使不进行反序列化,您也可以使用人眼查看它是什么。然而,Base64编码的Java序列化是一个无法理解的字符块。

有许多替代方案,您的问题相当广泛。你可以:

  • 使用,这是二进制的,然后编码它
  • 使用XML序列化库,例如
  • 使用JSON序列化库,例如
您提到的一个关键特性是需要将对象类型嵌入序列化数据中。原生Java序列化将类型嵌入到数据中,因此这是一个很好的候选者。然而,这是一把双刃剑,因为这会使数据变得脆弱——如果在将来某个时候更改了完全限定的类名,那么您将无法再反序列化该对象

另一方面,Gson不嵌入类型信息,因此必须同时存储JSON和对象类型才能反序列化对象


XML和JSON的优点是它们是文本格式,因此即使不进行反序列化,您也可以使用人眼查看它是什么。然而,Base64编码的Java序列化是一个无法理解的字符块。

有许多替代方案,您的问题相当广泛。你可以:

  • 使用,这是二进制的,然后编码它
  • 使用XML序列化库,例如
  • 使用JSON序列化库,例如
您提到的一个关键特性是需要将对象类型嵌入序列化数据中。原生Java序列化将类型嵌入到数据中,因此这是一个很好的候选者。然而,这是一把双刃剑,因为这会使数据变得脆弱——如果在将来某个时候更改了完全限定的类名,那么您将无法再反序列化该对象

另一方面,Gson不嵌入类型信息,因此必须同时存储JSON和对象类型才能反序列化对象


XML和JSON的优点是它们是文本格式,因此即使不进行反序列化,您也可以使用人眼查看它是什么。然而,Base64编码的Java序列化是一个无法理解的字符块。

有许多替代方案,您的问题相当广泛。你可以:

  • 使用,这是二进制的,然后编码它
  • 使用XML序列化库,例如
  • 使用JSON序列化库,例如
您提到的一个关键特性是需要将对象类型嵌入序列化数据中。原生Java序列化将类型嵌入到数据中,因此这是一个很好的候选者。然而,这是一把双刃剑,因为这会使数据变得脆弱——如果在将来某个时候更改了完全限定的类名,那么您将无法再反序列化该对象

另一方面,Gson不嵌入类型信息,因此必须同时存储JSON和对象类型才能反序列化对象

XML和JSON的优点是它们是文本格式,因此即使不进行反序列化,您也可以使用人眼查看它是什么。然而,Base64编码的Java序列化是一个无法理解的字符块<