前言
前后端分离:后端部署后端,提供接口,提供数据;前端独立部署,负责渲染后端的数据。前后端交换数据利用JSON。
一、JSON是什么?
- JSON(JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。
- 采用完全独立于编程语言的文本格式来存储和表示数据。
- 简洁、层次清晰。
- 易于阅读和编写,也易于机器解析生成,有效提升网络传输效率。
二、使用
1.JSON与JavaScript之间可以相互转换
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 编写一个JavaScript对象 ES6
var user = {
name : "李丽",
age:3,
sex:"女"
}
// 将js对象转化为 json对象
var json = JSON.stringify(user);
console.log(user);
// 将json对象转换为 JavaSrcipt对象
var obj = JSON.parse(json);
console.log(obj);
</script>
</head>
<body>
</body>
</html>
2.Controller返回JSON数据
1、Jackson,解析json工具
导入依赖
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
代码如下:
@Controller
public class UserController {
@RequestMapping("/j1")
@ResponseBody // 它就不会走视图解析器,会直接返回一个字符串
public String json1() throws JsonProcessingException {
//jackson, ObjectManager
ObjectMapper mapper = new ObjectMapper();
// 创建一个User
User user = new User("张三",11,"男");
String str = mapper.writeValueAsString(user);
return str;
}
}
解决乱码问题:
@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
统一解决乱码问题:
在springmvc的配置文件上添加:
<!-- JSON乱码问题配置 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false" />
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2、FastJson
三个主要类:
- JSONObject 代表 json 对象,实现了Map接口
- JSONArray 代表 json 对象数组,内部由 List 接口中的方法来完成操作
- JSON 代表 JSONObject 和 JSONArray 的转化
导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
代码如下:
@RestController // 直接返回字符串
public class UserController {
@RequestMapping("/j1")
public String json1() {
List<User> userList = new ArrayList<User>();
User user1 = new User("张三1号",11,"男");
User user2 = new User("张三2号",11,"男");
User user3 = new User("张三3号",11,"男");
User user4 = new User("张三4号",11,"男");
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
// Java对象 转 JSON字符串
String str1 = JSON.toJSONString(userList);
String str2 = JSON.toJSONString(user1);
// Java对象 转 JSON对象
JSONObject jsonObject1 =(JSONObject) JSON.toJSON(user2);
// JSON字符串 转 Java对象
User u1 = JSON.parseObject(str2,User.class);
// JSON对象 转 Java对象
User u2 = JSON.toJavaObject(jsonObject1,User.class);
String s = JSON.toJSONString(userList);
return s;
}
}
学习视频链接:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂
博主B站主页链接:遇见狂神说