Java世界中肯定有很多术语,这可以为新开发人员创造一个重要的学习曲线。这并不是说使用Java传递JSON或XML文档特别困难,只是多年来你需要做的各种零碎的东西已经萌芽了。我试图在下面列出我对你使用的术语的理解......
XML - 你知道XML是什么,对吧?可扩展标记语言。这是我们在JSON成为大事之前所拥有的。
JSON - 哦,好吧,JSON是新的大事。它是一种人类可读的对象序列化格式,比 XML 更不详细。现在很受欢迎。这是新的灵丹妙药,对你有什么问题都有好处,可以解决你所有的问题......
JAXB - Java 生态系统中的“用于 XML 绑定的 Java 体系结构”是将 XML 数据转换为对象的主要机制,然后可以与之交互,反之亦然。重要的是要意识到它是一个API而不是一个实现,所以它主要在包中定义一组注释和简单的类/接口。要使用 JAXB 执行任何有用的操作,您需要一个实现。Glassfish应用程序服务器中包含一个参考实现。大多数应用程序服务器将具有某种 JAXB 实现。javax.xml.bind
Jackson - 一个用于数据绑定的库。它支持 XML 和 JSON 作为文档格式,并实现 JAXB API。您可以使用 Jackson 作为 JAXB 的实现,也可以直接使用 Jackson API。
EclipseLink Moxy - JAXB API的替代实现。像杰克逊一样,它也有自己的API。您可以选择使用它,也可以不使用它。您可能不想同时使用Jackson和Moxy。
Jersey-media-moxy - 正如你所提到的,Jersey是JAX-RS的实现。JAX-RS的一个方面是传递文档 - 通常是XML或JSON。为此,泽西岛需要知道要使用哪个基础库进行数据绑定或流处理。因此,jersey-media-moxy 作为一种 Jersey 插件依赖项而存在,您可以使用它来配置 Jersey 以使用 Moxy 来满足您的对象序列化需求。有一个使用jackson的等效包,称为jeric-media-json-jackson。
Jettison - 另一个序列化库,用于将Java对象转换为Json并返回。
JSON-P - 用于将 JSON 作为事件流或通过数据绑定到对象进行处理的 API。此 API 仍在开发中。你可能会问,为什么有人在没有它的情况下进行json处理 - 答案是他们要么使用专有库API(如Jackson或Moxy),要么他们使用一个重新利用JAXB API与JSON一起使用的库(Jackson绝对允许这样做,我不确定Moxy)。JSON-P将使直接使用JSON功能变得更加容易,而无需JAXB引入的所有XML概念。