Java中JSON处理工具类使用详解

Java中JSON处理工具类使用详解

什么是JSON

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。JSON格式常用于服务端和客户端之间的数据传输。

为什么使用JSON

  • JSON格式数据包含在HTTP数据包中比XML更小,传输速度更快。
  • AJAX应用中,客户端统一管理JSON对象,JSON对象转换为JavaScript对象,简洁高效。
  • RESTful架构的web service可以使用JSON作为数据格式,JSON代表了web2.0以来的潮流和趋势,解析速度比XML快。

Java中常用的JSON处理工具类

在Java中我们可以使用多种JSON处理工具包来处理JSON模式的数据,其中常用的有以下几种:

  1. org.json
  2. com.google.gson
  3. net.sf.json
  4. Jackson

在本文中将详细介绍org.json和com.google.gson两种JSON处理工具的使用。

org.json的使用

org.json是Java语言中最基本的JSON处理工具之一,它提供的API简单易用且无需任何第三方依赖。要使用org.json,只需要在项目中加入两个jar包:json.jar 和 jsontest.jar。

1. org.json的JSONObject类

org.json的JSONObject类表示JSON类型的一个对象。可以通过以下方式创建一个JSONObject对象:

JSONObject object = new JSONObject();

我们也可以根据一个JSON格式的字符串来创建一个JSONObject对象:

String jsonString = "{\"name\":\"张三\",\"age\":20}";
JSONObject object = new JSONObject(jsonString);

此时我们已经创建了一个JSONObject对象,并且在该对象中设置了一个名称为name,值为张三的属性,一个名称为age,值为20的属性。

2. org.json的JSONArray类

org.json的JSONArray类表示JSON类型的一个数组。可以通过以下方式创建一个JSONArray对象:

JSONArray array = new JSONArray();

我们也可以根据一个JSON格式的字符串来创建一个JSONArray对象:

String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JSONArray array = new JSONArray(jsonArray);

此时我们已经创建了一个JSONArray对象,并且在该对象中设置了三个元素,分别是apple、banana、orange。

3. org.json的JSONArray与JSONObject互转

我们可以通过JSONObject中的put方法向一个JSONObject对象中添加一个JSONArray类型的属性:

JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);

通过以上代码,我们在JSONObject对象中添加了一个fruit属性,它的值是一个JSONArray类型,其中包含了三个字符串:apple、banana、orange。

我们也可以通过JSONArray的构造器来创建一个JSONArray对象,并在其中包含多个JSONObject对象:

JSONArray array = new JSONArray();
JSONObject object1 = new JSONObject();
object1.put("name", "张三");
object1.put("age", 20);
array.put(object1);
JSONObject object2 = new JSONObject();
object2.put("name", "李四");
object2.put("age", 23);
array.put(object2);

通过以上代码,我们已经创建了一个包含两个JSONObject的JSONArray对象。

4. org.json的JSON格式化

org.json提供了JSONArray和JSONObject的toString方法来将JSONArray和JSONObject对象转换成JSON格式的字符串。同时,org.json也提供了一个优化的JSON格式化器。

JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);
System.out.println(object);

以上代码输出结果如下:

{"fruit":["apple","banana","orange"]}

通过上述代码可以看出,json对象被自动格式化为带缩进的json字符串。

com.google.gson的使用

com.google.gson是Google出品的Java语言中比较流行的JSON处理工具之一,它使用注解和反射机制,让Java对象与JSON对象之间可以自动映射,简化了开发人员的工作复杂度。

1. com.google.gson的JsonParser类

com.google.gson的JsonParser类用于将JSON格式字符串转换为JsonElement对象。JsonElement是一个基类,可以代表一个JSON对象或JSON数组。

String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);

以上代码将JSON格式字符串转换成了JsonElement对象。

2. com.google.gson的JsonArray对象

com.google.gson的JsonArray类表示JSON类型的一个数组。可以通过以下方式创建一个JsonArray对象:

JsonArray array = new JsonArray();

我们也可以根据JSON格式字符串来创建一个JsonArray对象:

String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonArray);
JsonArray array = element.getAsJsonArray();

此时我们已经创建了一个JsonArray对象,并且在该对象中设置了三个元素,分别是apple、banana、orange。

3. com.google.gson的JsonObject对象

com.google.gson的JsonObject表示JSON类型的一个对象。可以通过以下方式创建一个JsonObject对象:

JsonObject object = new JsonObject();

我们也可以根据JSON格式字符串来创建一个JsonObject对象:

String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
JsonObject object = element.getAsJsonObject();

此时我们已经创建了一个JsonObject对象,并且在该对象中设置了一个名称为name,值为张三的属性,一个名称为age,值为20的属性。

4. com.google.gson的JSON格式化

com.google.gson提供了GsonBuilder类用于创建Gson对象,并提供了toJson方法将Java对象转换为JSON格式字符串。

Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonObject object = new JsonObject();
JsonArray array = new JsonArray();
array.add("apple");
array.add("banana");
array.add("orange");
object.add("fruit", array);
System.out.println(gson.toJson(object));

以上代码输出结果如下:

{
  "fruit": [
    "apple",
    "banana",
    "orange"
  ]
}

总结

本文详细介绍了Java中org.json和com.google.gson两种JSON处理工具的使用及其原理,也介绍了JSON格式的优势和常用的类型。在实际开发中,开发人员可以选择适用的JSON处理工具进行开发,以便在数据交换和解析上取得更好的效果。

示例说明

以下是org.json和com.google.gson两种JSON处理工具的使用示例:

org.json示例

//创建JSONObject对象
JSONObject object = new JSONObject();
object.put("name", "张三");
object.put("age", 20);
System.out.println(object.toString());

//创建JSONArray对象
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
System.out.println(array.toString());

//JSONArray和JSONObject互相转换
JSONObject object1 = new JSONObject();
object1.put("name", "张三");
object1.put("age", 20);
JSONObject object2 = new JSONObject();
object2.put("name", "李四");
object2.put("age", 21);
JSONArray array = new JSONArray();
array.put(object1);
array.put(object2);
System.out.println(array.toString());

//JSON格式化
JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);
System.out.println(object);

com.google.gson示例

//JsonParser的使用
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
System.out.println(element.getAsJsonObject());

//JsonArray的使用
String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonArray);
JsonArray array = element.getAsJsonArray();
System.out.println(array.toString());

//JsonObject的使用
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
JsonObject object = element.getAsJsonObject();
System.out.println(object.toString());

//JSON格式化
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonObject object = new JsonObject();
JsonArray array = new JsonArray();
array.add("apple");
array.add("banana");
array.add("orange");
object.add("fruit", array);
System.out.println(gson.toJson(object));

通过以上示例,我们可以清晰的了解了org.json和com.google.gson的使用方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中JSON处理工具类使用详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringData JPA的常用语法汇总

    下面将详细讲解关于Spring Data JPA的常用语法汇总。 一、什么是Spring Data JPA Spring Data JPA是Spring框架的一个扩展模块,可以使用简单且统一的API,提供了CRUD操作,还支持基于方法名称的查询、@Query查询以及Specification查询等。它更加注重与实体类相关的持久化层操作,将封装JPA的强大功能…

    Java 2023年6月2日
    00
  • java复制文件的4种方式及拷贝文件到另一个目录下的实例代码

    Java复制文件的4种方式及拷贝文件到另一个目录下的实例代码 在Java中,复制文件可以使用多种方式,这里详细介绍4种常用的方法及对应的实例代码。 1. 使用 InputStream 和 OutputStream 进行复制 第一种方式是使用 InputStream 和 OutputStream,具体步骤如下: 创建 File 对象表示输入文件和输出文件; 创…

    Java 2023年5月20日
    00
  • java通过实例了解值传递和引用传递

    首先,需要理解Java中两种数据类型传递方式:值传递和引用传递。值传递是指在方法调用时传递的是实际的值,而引用传递则是指传递的是对象的引用。 值传递(Value Passing) Java中的基本数据类型,如int、float、boolean等都是通过值传递的方式进行传递。这意味着,当你将一个基本数据类型作为参数传递给一个方法时,它会复制参数的值,并将其传递…

    Java 2023年5月27日
    00
  • Eclipse中配置Maven的图文教程

    下面是Eclipse中配置Maven的详细攻略: 步骤一:下载安装Maven 首先,我们需要下载并安装Maven,这里我们推荐使用Apache Maven官方网站提供的二进制版本。以下是下载Maven的步骤: 访问官方网站:https://maven.apache.org/download.cgi 选择最新的二进制版本进行下载。 下载完成后,解压到本地某个目…

    Java 2023年5月19日
    00
  • 关于jsp版ueditor1.2.5的部分问题解决(上传图片失败)

    关于jsp版ueditor1.2.5的部分问题解决(上传图片失败)攻略可以按照以下步骤进行: 1. 修改配置文件 打开ueditor.config.js文件,将serverUrl修改为你后端处理上传请求的路径。例如: window.UEDITOR_CONFIG = { …, serverUrl: ‘uploadImage.jsp’ } 其中,upload…

    Java 2023年5月20日
    00
  • Java按时间梯度实现异步回调接口的方法

    接下来我将详细讲解Java按时间梯度实现异步回调接口的方法的完整攻略,过程中将包含两条示例。 什么是异步回调接口 异步回调接口是一种常用的编程技术,它允许程序在后台执行任务的同时,不会阻塞主线程的进行,并在任务执行完成后异步地通知调用方。异步回调接口在Java中具有广泛的应用,例如在处理网络请求时通常使用异步回调接口来处理异步响应。 实现异步回调的方法 在J…

    Java 2023年5月20日
    00
  • SpringBoot注册Servlet的三种方法详解

    Spring Boot注册Servlet的三种方法详解 在Spring Boot应用程序中,注册Servlet是一个非常常见的需求。本文将详细介绍Spring Boot注册Servlet的三种方法,包括使用注解、使用ServletRegistrationBean和使用WebServerFactoryCustomizer。 使用注解 使用注解是一种常见的Spr…

    Java 2023年5月15日
    00
  • 扩展Hibernate使用自定义数据库连接池的方法

    下面我为你介绍如何扩展Hibernate使用自定义数据库连接池的方法。 概述 在Hibernate中,数据库连接池是默认使用的连接池。但是,也可以通过使用自定义连接池来满足特定的需求。本文将演示如何扩展Hibernate使用自定义数据库连接池的方法。 实现步骤 步骤一:编写自定义连接池类 首先,我们需要编写一个类来实现我们的自定义连接池。这个类需要实现Hib…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部