有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中toString和serialize之间的json差异

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

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

例如,我在处理请求的方法中创建了一个名为JSONArrayjsonArray对象。我可以使用return jsonArray.toString();获取字符串并将其发送回。我还可以使用return jsonArray和JAXB(JSONArray类中的注释@XmlRootElement和方法中的@Produces({ MediaType.APPLICATION_JSON}))以JSON格式自动序列化对象

我想知道手动发回字符串和使用注释自动序列化之间的区别。(表演?)


共 (1) 个答案

  1. # 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