SpringMVC处理json(三)

2023-05-14 11:15:49 浏览数 (1)

使用Gson库处理JSON数据

Gson是Google提供的Java库,用于将Java对象序列化为JSON字符串,或将JSON字符串反序列化为Java对象。Gson提供了一个简单而灵活的API,可以帮助我们快速地将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。下面介绍如何在SpringMVC中使用Gson处理JSON数据。

添加依赖

在使用Gson库之前,需要在Maven或Gradle构建工具中添加Gson依赖。示例代码如下:

代码语言:javascript复制
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

配置Gson

接下来,我们需要在SpringMVC配置文件中配置Gson:

代码语言:javascript复制
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 配置Gson消息转换器
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converter.setGson(new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create());
        converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
        converters.add(converter);
    }
}

在上述示例中,我们创建了一个WebMvcConfig类,并实现了WebMvcConfigurer接口。在configureMessageConverters方法中,我们配置了GsonHttpMessageConverter类,用于将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。在converter.setGson方法中,我们设置了Gson的一些选项,例如日期格式化等。在converter.setSupportedMediaTypes方法中,我们设置了Gson支持的媒体类型。

创建Java对象

接下来,我们创建一个Java对象,用于序列化为JSON字符串:

代码语言:javascript复制
public class User {
    private Long id;
    private String name;
    private Integer age;

    // getters and setters
}

序列化Java对象

现在,我们可以使用Gson类将Java对象序列化为JSON字符串:

代码语言:javascript复制
@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable("id") Long id) {
        User user = new User();
        user.setId(id);
        user.setName("John");
        user.setAge(30);

        return new Gson().toJson(user);
    }
}

在上述示例中,我们定义了一个getUser方法,使用@GetMapping注解表示使用GET方法访问/users/{id}路径时会调用该方法。getUser方法中创建了一个User对象,并使用new Gson().toJson方法将User对象序列化为JSON字符串,并返回给浏览器。

反序列化JSON字符串

除了将Java对象序列化为JSON字符串之外,Gson还可以将JSON字符串反序列化为Java对象。示例代码如下:

代码语言:javascript复制
@PostMapping
public User createUser(@RequestBody String json) {
    User user = new Gson().fromJson(json, User.class);
    return userService.createUser(user);
}

在上述示例中,我们定义了一个createUser方法,使用@PostMapping注解表示使用POST方法访问/users路径时会调用该方法。createUser方法中使用@RequestBody注解获取请求体中的JSON字符串,并使用new Gson().fromJson方法将JSON字符串反序列化为User对象,并将User对象保存到数据库中。

0 人点赞