使用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对象保存到数据库中。