Java中toString和serialize之间的json差异
我使用Jersey创建了一个JAR-RS Web服务,该服务使用JSON格式的数据进行响应
当请求到达时,使用@Path
注释,一个方法捕获请求并处理它并返回一些内容
例如,我在处理请求的方法中创建了一个名为JSONArray
的jsonArray
对象。我可以使用return jsonArray.toString();
获取字符串并将其发送回。我还可以使用return jsonArray
和JAXB(JSONArray类中的注释@XmlRootElement
和方法中的@Produces({ MediaType.APPLICATION_JSON})
)以JSON格式自动序列化对象
我想知道手动发回字符串和使用注释自动序列化之间的区别。(表演?)
# 1 楼答案
不,没有输出差异。主要区别在于
return jsonArray
可以被认为更具可读性(特别是对于其他程序员),而return jsonArray.toString()
则更明确。前者的问题是,当阅读您的代码的人需要理解,获取jsonArray
对象的东西会以静默方式序列化它时,事情就变得更加模糊了两种方法之间的另一个区别是,让框架这样做可以保证框架中的最终更新将以序列化的方式反映出来。
toString()
方法最初不是为了提供对象的序列化视图而设计的,后者可以用来取回对象,而是为了简单地提供对象的文本(甚至是不完整的)表示如果您使用的类没有提供序列化,或者提供的序列化没有正确生成JSON(或任何您想要的格式),那么您可以始终创建自己的序列化。将对象包装在属于您定义的类的对象中,并使此类类可序列化。然后提供以下方法:
私有void writeObject(ObjectOutputStream out)抛出IOException; 私有void readObject(ObjectInputStream in)抛出IOException、ClassNotFoundException
是的,他们应该是私人的。更多信息请参见:Discover the secrets of the Java Serialization API