Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java序列化、JSON和JAXB之间的区别?_Java_Json_Xml_Serialization_Jaxb - Fatal编程技术网

Java序列化、JSON和JAXB之间的区别?

Java序列化、JSON和JAXB之间的区别?,java,json,xml,serialization,jaxb,Java,Json,Xml,Serialization,Jaxb,对象可序列化接口的实现是否与该对象序列化为JSON或XML的能力有关? Java序列化使用的文本格式有名称吗? 如果不是,我们是否应该使用“序列化”一词来描述将对象导出为JSON或XML,以避免混淆? 在AO,这三种序列化方法的典型用途是什么 我知道JAXB通常用于将XML转换为Java,而不是反过来,但我听说反过来也是可能的。序列化只是指将对象从特定于进程的内存格式导出为可由不同进程或应用程序读取和理解的进程间格式。它可能是文本,也可能是二进制的,没关系。都是序列化。反向进程(将序列化的进程间

对象可序列化接口的实现是否与该对象序列化为JSON或XML的能力有关? Java序列化使用的文本格式有名称吗? 如果不是,我们是否应该使用“序列化”一词来描述将对象导出为JSON或XML,以避免混淆? 在AO,这三种序列化方法的典型用途是什么

我知道JAXB通常用于将XML转换为Java,而不是反过来,但我听说反过来也是可能的。

序列化只是指将对象从特定于进程的内存格式导出为可由不同进程或应用程序读取和理解的进程间格式。它可能是文本,也可能是二进制的,没关系。都是序列化。反向进程(将序列化的进程间格式读取并解析为内存中的进程内格式)称为反序列化

从这个意义上讲,将对象序列化为ObjectStream与将其序列化为JSON或XML一样重要。ObjectStream序列化很难被非java(包括人类)理解/解析,它不是“人类可读的”),但之所以使用它,是因为它可以在几乎任何对象上完成,而无需任何特殊标记

另一方面,JSON/XML需要额外的工作来告诉解析器如何将它们映射到JSON/XML或从JSON/XML映射到JSON/XML,但是非常可移植——几乎每种语言都可以理解JSON/XML,包括人类——它是“人类可读的”.

序列化只是指将对象从特定于进程的内存格式导出为可由不同进程或应用程序读取和理解的进程间格式。它可能是文本,也可能是二进制的,没关系。都是序列化。反向进程(将序列化的进程间格式读取并解析为内存中的进程内格式)称为反序列化

从这个意义上讲,将对象序列化为ObjectStream与将其序列化为JSON或XML一样重要。ObjectStream序列化很难被非java(包括人类)理解/解析,它不是“人类可读的”),但之所以使用它,是因为它可以在几乎任何对象上完成,而无需任何特殊标记


另一方面,JSON/XML需要额外的工作来告诉解析器如何将它们映射到JSON/XML和从JSON/XML映射到JSON/XML,但是非常可移植——几乎每种语言都可以理解JSON/XML,包括人类——它是“人类可读的”。

Java对象序列化的一个目的是能够将它们写入(二进制)文件一些Java程序可以从中读回它们的文件,并将相同的对象放入其内存中。这种用法通常仅限于Java应用程序的编写和读取,尽管一些非Java应用程序可能是为了理解二进制格式而编写的

另一种常用的Java对象序列化是将它们写入文本(或二进制)文件,一些程序(注意:Java的缺失)可以从中读取和重构与POJO等效的对象或数据结构。当然,这也起到了相反的作用。(我添加了“二进制”,因为有些二进制格式不是由Java定义的,它们是独立于体系结构的,例如ASN.1。)


而且,是的,JAXB以任何一种方式工作,但是如果XML相当“古怪”,也就是说,远离JAXB可以处理或容易处理的东西,那么就会有一些困难。但是,如果您可以设计XML模式或Java类,那么它工作得非常好。JAXB是JDK的一部分,如果您需要从Java到X或返回,您可能更喜欢使用它而不是其他序列化。XML还有其他语言绑定。

Java对象序列化的一个目的是能够将它们写入一个(二进制)文件,一些Java程序可以从中读回它们,将相同的对象放入内存。这种用法通常仅限于Java应用程序的编写和读取,尽管一些非Java应用程序可能是为了理解二进制格式而编写的

另一种常用的Java对象序列化是将它们写入文本(或二进制)文件,一些程序(注意:Java的缺失)可以从中读取和重构与POJO等效的对象或数据结构。当然,这也起到了相反的作用。(我添加了“二进制”,因为有些二进制格式不是由Java定义的,它们是独立于体系结构的,例如ASN.1。)


而且,是的,JAXB以任何一种方式工作,但是如果XML相当“古怪”,也就是说,远离JAXB可以处理或容易处理的东西,那么就会有一些困难。但是,如果您可以设计XML模式或Java类,那么它工作得非常好。JAXB是JDK的一部分,如果您需要从Java到X或返回,您可能更喜欢使用它而不是其他序列化。XML还有其他语言绑定。

Java序列化使用的文本格式有名称吗?Java不序列化为文本,所以不,它是匿名的。Java序列化使用的文本格式有名称吗?Java不序列化为文本,所以不,它是匿名的。谢谢你的帮助!谢谢你的帮助!说输出格式是十六进制,你能评论一下吗?“十六进制”不会出现在这里的任何地方,除了在你的评论里。它通常意味着“数据由0-9,A-F,每个字节两个表示。”我在这里也没有看到。也许你没有在我的评论中找到链接。在链接页面的标题“对象的序列化格式”下,文件以十六进制显示;但可能它通常以二进制形式输出,而文章作者为了节省空间特意将其转换为十六进制。@wcr4您可以“输出”任何十六进制(十六进制字符)”形式的内容您将实际表示与某些显示格式混淆。如果整数42的实际表示为一个字节,则可以将该字节显示为“2A”(“十六进制字符”)或“00101010”(“二进制字符”)或“42”或“052”(“八进制字符”)