java web中对json的使用详解

Java Web中对JSON的使用详解

什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用中的前后端数据传输。JSON格式数据本质上是一个JavaScript对象,采用键值对的方式存储数据。

JSON与Java的关系

Java中有许多开源的JSON库,如Jackson、Gson、Fastjson等。它们可以方便地将Java对象转为JSON格式数据,或者将JSON格式数据转为Java对象。

使用Jackson库处理JSON数据

下面以Jackson库为例,演示如何在Java Web中使用JSON。

添加依赖

  1. 在Maven工程中,需要在pom.xml添加如下依赖:

xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>

这里我们选择最新的2.12.4版本。

  1. 如果使用非Maven项目,也可以去官网下载Jar包,然后将其添加到项目中。

序列化Java对象

将Java对象转为JSON格式数据的过程称为序列化。序列化一般使用ObjectMapper类,示例如下:

public class User {
    private String name;
    private int age;
    // getter和setter省略
}

// 将User对象序列化为JSON格式字符串
ObjectMapper objectMapper = new ObjectMapper();
User user = new User("张三", 22);
String jsonStr = objectMapper.writeValueAsString(user);
System.out.println(jsonStr);

输出结果为:

{"name":"张三","age":22}

反序列化JSON数据

将JSON格式数据转为Java对象的过程称为反序列化。反序列化一般使用ObjectMapper类,示例如下:

// 将JSON格式字符串反序列化为User对象
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = "{\"name\":\"张三\",\"age\":22}";
User user = objectMapper.readValue(jsonStr, User.class);
System.out.println(user.getName());

输出结果为:

张三

Spring MVC中的JSON响应

在Spring MVC中,我们可以使用注解@ResponseBody将Java对象自动序列化为JSON格式数据,然后返回给客户端。

@RestController
public class UserController {

    @GetMapping("/users")
    public List<User> getUsers() {
        List<User> userList = new ArrayList<>();
        // 假设这里从数据库获取了用户数据
        userList.add(new User("张三", 22));
        userList.add(new User("李四", 23));
        return userList;
    }

}

上面的代码中,@RestController注解表示这个类是一个控制器类,其中的getUsers()方法返回一个Java集合,它会自动序列化为JSON格式数据并返回给客户端。

使用JSON请求体

客户端向服务器发送数据时,一般使用JSON格式数据作为请求体。在Spring MVC中,可以使用注解@RequestBody将JSON格式请求体转为Java对象。

@RestController
public class UserController {

    @PostMapping("/users")
    public String addUser(@RequestBody User user) {
        // 将user保存到数据库
        return "success";
    }
}

上面的代码中,客户端发送了一个JSON格式请求体,其中包含了用户信息。在addUser()方法中,我们使用@RequestBody注解将请求体转为一个Java对象,然后将该对象保存到数据库。

使用Gson库处理JSON数据

下面以Gson库为例,演示如何在Java Web中使用JSON。

添加依赖

  1. 在Maven工程中,需要在pom.xml添加如下依赖:

xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>

这里我们选择最新的2.8.8版本。

  1. 如果使用非Maven项目,也可以去官网下载Jar包,然后将其添加到项目中。

序列化Java对象

使用Gson库序列化Java对象的过程与Jackson类似,示例如下:

public class User {
    private String name;
    private int age;
    // getter和setter省略
}

// 将User对象序列化为JSON格式字符串
Gson gson = new Gson();
User user = new User("张三", 22);
String jsonStr = gson.toJson(user);
System.out.println(jsonStr);

输出结果为:

{"name":"张三","age":22}

反序列化JSON数据

使用Gson库反序列化JSON数据的过程与Jackson类似,示例如下:

// 将JSON格式字符串反序列化为User对象
Gson gson = new Gson();
String jsonStr = "{\"name\":\"张三\",\"age\":22}";
User user = gson.fromJson(jsonStr, User.class);
System.out.println(user.getName());

输出结果为:

张三

Spring MVC中的JSON响应

在Spring MVC中,我们可以使用注解@ResponseBody将Java对象自动序列化为JSON格式数据,然后返回给客户端。使用Gson库时,需要添加一个GsonHttpMessageConverter bean。

@Configuration
public class AppConfig {

    @Bean
    public GsonHttpMessageConverter gsonHttpMessageConverter() {
        Gson gson = new GsonBuilder().create();
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converter.setGson(gson);
        return converter;
    }
}

上面的代码中,我们创建了一个Gson对象,并将其设置到一个GsonHttpMessageConverter bean中,然后注册到Spring容器中。

@RestController
public class UserController {

    @GetMapping("/users")
    public List<User> getUsers() {
        List<User> userList = new ArrayList<>();
        // 假设这里从数据库获取了用户数据
        userList.add(new User("张三", 22));
        userList.add(new User("李四", 23));
        return userList;
    }

}

上面的代码中,@RestController注解表示这个类是一个控制器类,其中的getUsers()方法返回一个Java集合,它会自动序列化为JSON格式数据并返回给客户端。

使用JSON请求体

客户端向服务器发送数据时,一般使用JSON格式数据作为请求体。在Spring MVC中,可以使用注解@RequestBody将JSON格式请求体转为Java对象。

@RestController
public class UserController {

    @PostMapping("/users")
    public String addUser(@RequestBody User user) {
        // 将user保存到数据库
        return "success";
    }
}

上面的代码中,客户端发送了一个JSON格式请求体,其中包含了用户信息。在addUser()方法中,我们使用@RequestBody注解将请求体转为一个Java对象,然后将该对象保存到数据库。

总结

本文演示了Jackson和Gson两个JSON库的使用方法,并介绍了在Java Web中使用JSON的常见场景。在实际开发中,需要根据具体情况选择合适的JSON库,并学会利用其API完成数据的序列化和反序列化,以及在Spring MVC中的JSON响应和请求体处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java web中对json的使用详解 - Python技术站

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

相关文章

  • Java 自定义错误类示例代码

    以下是Java自定义错误类的完整攻略: 自定义Java错误类 自定义Java错误类是一种创建自定义异常的方法,可以通过继承标准异常类来自定义类。自定义错误类可用于解释Java应用程序抛出的特定错误和异常。用户可以通过制定自己的错误类来自定义错误信息并创建可读性更好的异常信息。 创建一个自定义错误类 要创建一个自定义Java错误类,可以继承Exception或…

    Java 2023年5月27日
    00
  • JSP中out对象的实例详解

    下面是本人为大家准备的详细讲解“JSP中out对象的实例详解”的攻略。 JSP中out对象的实例详解 1. out对象简介 在JSP页面中,out对象是一个内置对象,用于向客户端输出内容。 2. out对象的创建 当在JSP页面中使用语句 out.print(“hello, world”) 时,就会自动创建一个名为 “out” 的输出流对象。 3. out对…

    Java 2023年6月15日
    00
  • 详解SpringBoot中的参数校验(项目实战)

    详解SpringBoot中的参数校验(项目实战) 在Spring Boot中,参数校验是一个非常重要的功能,它可以帮助我们在接口层面对请求参数进行校验,避免了一些不必要的错误和异常。本文将详细讲解Spring Boot中的参数校验功能,包括以下内容: 参数校验的基本概念 Spring Boot中的参数校验实现方法 示例一:使用注解方式进行参数校验 示例二:使…

    Java 2023年5月15日
    00
  • 常见的对象引用有哪些?

    关于“常见的对象引用有哪些”这个问题,下面我将为大家提供一份完整的使用攻略,具体步骤如下: 第一步:理解对象引用的含义 对象引用,是指在 Java 中,存储在变量中的引用,指向在内存中分配的实际的对象。变量只存储引用,而不存储实际的对象。因此,Java 中的对象引用是一种非常重要的概念。 第二步:了解常见的对象引用 Java 中常见的对象引用有以下四种: 强…

    Java 2023年5月11日
    00
  • Struts2实现CRUD(增 删 改 查)功能实例代码

    实现CRUD(增删改查)功能是Web开发中最基本的功能之一,本文将详细讲解如何使用Struts2框架实现该功能。 步骤一:新建项目并引入依赖 首先,在Eclipse中新建一个动态Web项目,命名为:Struts2CRUD。接着,新增一个名为“lib”的文件夹,用于存放所需的Jar包。然后,将以下Jar包复制到该文件夹中: commons-lang3-x.x.…

    Java 2023年5月20日
    00
  • SpringBoot+SpringSecurity+JWT实现系统认证与授权示例

    下面是“SpringBoot+SpringSecurity+JWT实现系统认证与授权”的完整攻略: 一、什么是Spring Boot、Spring Security和JWT Spring Boot:是一个快速开发框架,能够简化Spring应用程序的创建和开发过程。 Spring Security:是Spring框架中提供的一套安全服务框架,可以用来保护Web…

    Java 2023年5月20日
    00
  • Java中的集合框架是什么?

    Java中的集合框架是一个内置的数据结构库,它提供了一组接口和类,用于处理和管理元素的类集合。Java集合框架有助于开发人员以更高效、更灵活和更可扩展的方式处理复杂数据。 Java集合框架中的类和接口被组织成三个主要的继承层次结构:Collection、Map 和 Iterator。其中,Collection是表示一组对象的根接口,Map是表示一组键值对(k…

    Java 2023年4月27日
    00
  • Java多线程之定时器Timer的实现

    对于Java多线程之定时器Timer的实现,我们可以分为以下几个步骤: 1. 导入Timer类 在Java中,我们需要通过import java.util.Timer来导入Timer类的使用。 2. 创建Timer实例对象 在导入Timer类之后,我们需要通过Timer timer = new Timer()来创建一个Timer实例对象。 3. 创建Time…

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