Java中toString和serialize之间的区别

时间:2015-08-07 12:52:31

标签: java json jaxb

我使用Jersey创建了一个响应JSON格式数据的JAR-RS Web服务。

当请求到达时,使用@Path注释,方法捕获请求处理它并返回一些内容。

例如,我在处理请求的方法中创建了一个名为JSONArray的{​​{1}}对象。我可以使用jsonArray来获取String并将其发回。我还可以使用return jsonArray.toString();和JAXB(JSONArray类中的annoation return jsonArray和方法中的@XmlRootElement)来自动序列化JSON格式的对象。

我想知道手动发回字符串和使用注释自动序列化有什么区别。(性能?)

1 个答案:

答案 0 :(得分:2)

不,没有产出差异。主要区别在于return jsonArray可以被认为更具可读性(特别是对于其他程序员),而return jsonArray.toString()更明确。前者的问题在于事情更加模糊,因为阅读代码的人需要理解让jsonArray对象静默地序列化它的东西。

方法之间的另一个区别是,让框架执行它可以保证框架中的最终更新将反映在事物序列化的方式中。 toString()方法最初并不是为了提供对象的序列化视图,以后可以用来获取对象,而是简单地提供对象的文本(甚至不完整)表示。

如果您使用的类没有提供序列化,或者提供的序列化没有正确生成JSON(或任何您想要的格式),您始终可以创建自己的序列化。将对象包装在属于您定义的类的对象内部,并使这样的类可序列化。然后提供以下方法:

private void writeObject(ObjectOutputStream out)抛出IOException; private void readObject(ObjectInputStream in)抛出IOException,ClassNotFoundException;

而且,是的,他们应该是私人的。点击此处:Discover the secrets of the Java Serialization API