Java JSON教程
JSON是JavaScript对象表示法的缩写。 JSON是浏览器和Web服务器之间流行的数据交换格式,因为浏览器可以将JSON本身解析为JavaScript对象。但是,在服务器上,需要使用JSON API解析和生成JSON。该Java JSON教程重点介绍我们可以使用Java解析和生成JSON的各种选择。
该Java JSON教程包含许多页面。每个页面描述例如的不同方面。 Java JSON API,或者通常在Java中使用JSON。此页面仅是此Java JSON教程的首页/第一页。请参阅左侧菜单以获取此Java JSON教程中所有页面的列表。
Java JSON API
当JSON首次流行时,Java没有标准的JSON解析器/生成器实现。相反,Java开发人员必须依靠开源Java JSON API。从那时起,Java便尝试解决JSR 353中缺少的Java JSON API。请记住,JSR 353尚未成为正式标准(如我所写)。
Java社区还开发了几种开源Java JSON API。与JSR 353 API相比,开源Java JSON API在使用JSON时通常提供更多选择和灵活性。因此,开源API仍然是不错的选择。一些更著名的开源Java JSON API是:
- Hymanson
- GSON
- Boon
- JSON.org
如果我们更喜欢使用符合JSR 353的JSON解析器,则可以使用JSONP。
以下各节将更详细地介绍开源和JSONP Java JSON API。
Hymanson
Hymanson是Java JSON API,它提供了几种使用JSON的方式。 Hymanson是最流行的Java JSON API之一。我们可以在这里找到Hymanson:
https://github.com/FasterXML/Hymanson
Hymanson包含2个不同的JSON解析器:
- Hymanson ObjectMapper,它将JSON解析为自定义Java对象或者Hymanson特定的树结构(树模型)。
- Hymanson JsonParser是Hymanson的JSON提取解析器,一次解析JSON一个令牌。
Hymanson还包含两个JSON生成器:
- Hymanson ObjectMapper可以从自定义Java对象或者Hymanson特定的树结构(树模型)生成JSON。
- Hymanson JsonGenerator一次可以生成一个JSON令牌。
GSON
GSON是Google的Java JSON API。那就是GSON中G的来源。 GSON相当灵活,但是我上次看到基准测试时,Hymanson比GSON快。我们选择使用哪种取决于我们。我们可以在这里找到GSON:
https://github.com/google/gson
GSON包含3个Java JSON解析器:
- 可以将JSON解析为自定义Java对象的Gson类。
- GSON JsonReader是GSON的pull JSON解析器-一次解析JSON一个令牌。
- GSON JsonParser可以将JSON解析为GSON特定Java对象的树形结构。
GSON还包含一个JSON生成器:
- 可以从自定义Java类生成JSON的Gson类。
Boon
Boon是鲜为人知的Java JSON API,但是据称它是所有这些中最快的(根据我看到的最后一个基准测试)。 Boon在Groovy中被用作标准的JSON API。我们可以在这里找到Boon:
https://github.com/boonproject/boon
Boon的API与Hymanson的API非常相似(因此很容易切换),但Boon不仅仅是Java JSON API。 Boon是用于轻松处理数据的通用工具包。这很方便,例如内部REST服务,文件处理应用程序等。
Boon包含以下Java JSON解析器:
- Boon ObjectMapper可以将JSON解析为自定义对象或者Java Map
像在Hymanson中一样,Boon ObjectMapper也可以用于从自定义Java对象生成JSON。
JSON.org
JSON.org也有一个开源Java JSON API。这是最早可用的Java JSON API之一。它相当易于使用,但不如上述其他JSON API灵活或者快速。我们可以在这里找到JSON.org:
https://github.com/douglascrockford/JSON-java
正如Github存储库中所说的那样,这是一个旧的Java JSON API。除非项目已经在使用它,否则请不要使用它。否则,请寻找其他较新的选项之一。
JSONP
JSONP是Java的JSR 353兼容JSON API。符合JSR 353意味着,如果我们使用标准API,将来应该可以在不破坏代码的情况下与另一个API交换JSONP实现。我们可以在这里找到JSONP:
https://jsonp.java.net/