SpringMVC处理json(二)

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

使用FastJson库处理JSON数据

FastJson是一个快速的JSON处理库,也是一个广泛使用的JSON库。FastJson提供了对Java对象和JSON字符串之间的转换,同时也提供了对JSON字符串的解析和生成。下面介绍如何在SpringMVC中使用FastJson处理JSON数据。

添加依赖

首先,我们需要添加FastJson的依赖:

代码语言:javascript复制
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>

配置FastJson

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

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

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 配置FastJson消息转换器
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        converter.setFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);
        converter.setCharset(StandardCharsets.UTF_8);
        converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
        converters.add(converter);
    }
}

在上述示例中,我们创建了一个WebMvcConfig类,并实现了WebMvcConfigurer接口。WebMvcConfigurer接口提供了多个方法,用于自定义SpringMVC的配置。在configureMessageConverters方法中,我们配置了FastJsonHttpMessageConverter类,用于将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。在converter.setFeatures方法中,我们设置了FastJson的一些特性,例如写入null值、将空List转换为空数组等。在converter.setSupportedMediaTypes方法中,我们设置了FastJson支持的媒体类型。

创建Java对象

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

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

    // getters and setters
}

序列化Java对象

现在,我们可以使用FastJson类将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 JSON.toJSONString(user);
    }
}

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

反序列化JSON字符串

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

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

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

0 人点赞