FastJson 介绍

FastJson 是一个 Java 序列化/反序列化库,能够将 Java 对象转换成 JSON 格式的字符串,也可以将 JSON 格式的字符串转换成 Java 对象。

1. 使用方法

下面简单介绍一下 FastJson 的使用方法。

1.1 转换 Java 对象为 JSON 格式字符串

可以使用 JSONObject 、 JSONArray 或 JSON.toJSONString() 方法将 Java 对象转换成 JSON 格式字符串:

```java

// 1. 使用 JSONObject 转换

JSONObject json1 = new JSONObject();

json1.put("name", "Tom");

json1.put("age", 18);

// 2. 使用 JSONArray 转换

JSONArray json2 = new JSONArray();

json2.add("apple");

json2.add("banana");

// 3. 使用 JSON.toJSONString() 方法转换

User user = new User("Tom", 18);

String json3 = JSON.toJSONString(user);

```

1.2 转换 JSON 格式字符串为 Java 对象

使用 JSON.parseObject() 方法将 JSON 格式字符串转换成 Java 对象:

```java

// JSON 格式字符串

String json = "{\"name\":\"Tom\",\"age\":18}";

// 将 JSON 格式字符串转换成 Java 对象

User user = JSON.parseObject(json, User.class);

```

1.3 序列化和反序列化混合对象

FastJson 还支持对混合对象的序列化和反序列化操作:

```java

// 学生类

public class Student {

private String name;

private int age;

private List courses;

// getter 和 setter

}

// 课程类

public class Course {

private String name;

private int score;

// getter 和 setter

}

// 混合对象

Map map = new HashMap<>();

map.put("name", "Tom");

map.put("age", 18);

List courses = new ArrayList<>();

courses.add(new Course("Math", 90));

courses.add(new Course("English", 80));

map.put("courses", courses);

// 对混合对象进行序列化

String json = JSON.toJSONString(map);

// 将 JSON 格式字符串转换成混合对象

Map map2 = JSON.parseObject(json, new TypeReference>() {});

List courses2 = JSON.parseArray(JSON.toJSONString(map2.get("courses")), Course.class);

Student student = new Student();

student.setName((String) map2.get("name"));

student.setAge((int) map2.get("age"));

student.setCourses(courses2);

```

2. 案例说明

FastJson 可以用于很多场景中,例如前后端数据交互、日志输出等。

2.1 前后端数据交互

假设一个前后端分离的项目,后端使用 Spring Boot、Spring MVC 框架,前端使用 Vue.js 框架,它们之间需要进行数据交互。

后端代码:

```java

@RestController

@RequestMapping("/user")

public class UserController {

@GetMapping("/{id}")

public ResponseEntity getUser(@PathVariable("id") Long id) {

User user = userService.getUserById(id);

return ResponseEntity.ok(user);

}

@PostMapping

public ResponseEntity addUser(@RequestBody User user) {

userService.addUser(user);

return ResponseEntity.ok().build();

}

}

```

前端代码:

```javascript

// 获取用户信息

fetch('/user/1')

.then(response => response.json())

.then(json => {

// 处理获取到的用户信息

});

// 提交用户信息

fetch('/user', {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

name: 'Tom',

age: 18

})

})

.then(response => {

// 处理提交结果

});

```

可以看到,后端通过 ResponseEntity.ok() 方法返回一个 HTTP 状态码为 200 的响应,并将 User 对象转换成 JSON 格式字符串返回给前端。

前端使用 fetch() 方法发送 HTTP 请求,并通过 response.json() 方法将响应的 JSON 格式字符串转换成 JavaScript 对象。

2.2 日志输出

FastJson 还可以将 Java 对象转换成 JSON 格式字符串并输出到日志中,便于查看和分析。

```java

@Slf4j

@Service

public class UserServiceImpl implements UserService {

@Override

public User getUserById(Long id) {

User user = userDao.findById(id);

log.info("getUserById: {}", JSON.toJSONString(user));

return user;

}

@Override

public void addUser(User user) {

userDao.addUser(user);

log.info("addUser: {}", JSON.toJSONString(user));

}

}

```

3. 总结

FastJson 是一个便捷易用的 Java 序列化/反序列化库,能够将 Java 对象转换成 JSON 格式字符串,也可以将 JSON 格式字符串转换成 Java 对象。它适用于很多场景,例如前后端数据交互、日志输出等。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(83) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部