SpringMVC框架(四)—JSON
什么是JSON策吠?
- JSON(JavaScript Object Notation, JS 對象標(biāo)記) 是一種輕量級的數(shù)據(jù)交換格式,目前使用特別廣泛瘩绒。
- 采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)猴抹。
- 簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。
- 易于人閱讀和編寫锁荔,同時也易于機(jī)器解析和生成蟀给,并有效地提升網(wǎng)絡(luò)傳輸效率
JSON 鍵值對是用來保存 JavaScript 對象的一種方式,和 JavaScript 對象的寫法也大同小異阳堕,鍵/對組
合中的鍵名寫在前面并用雙引號 "" 包裹跋理,使用冒號 : 分隔,然后緊接著值:
領(lǐng)取資料
作用:前后端數(shù)據(jù)交互
JSON 和 JavaScript 對象互轉(zhuǎn)
<script type="text/javascript">
//編寫一個JavaScript對象
var user = {
name : "張三",
age : 18,
sex : "男"
};
//將js對象轉(zhuǎn)換為json對象
var json = JSON.stringify(user);
console.log(json);//加群1025684353一起吹水聊天
console.log("==================");
//將json對象轉(zhuǎn)換成JavaScript對象
var obj = JSON.parse(json);
console.log(obj);
</script>
Controller返回JSON數(shù)據(jù)
一、使用Jackson解析工具
1壹堰、導(dǎo)入Jackson依賴
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>//加群1025684353一起吹水聊天
</dependency>
領(lǐng)取資料
2拭卿、配置web.xml
<!--注冊Servlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--通過初始化參數(shù)指定SpringMVC配置文件的位置,進(jìn)行關(guān)聯(lián)-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!-- 啟動順序贱纠,數(shù)字越小峻厚,啟動越早 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!--所有請求都會被springmvc攔截 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>//加群1025684353一起吹水聊天
<url-pattern>/</url-pattern>
</filter-mapping>
領(lǐng)取資料
3、配置spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--自動掃描包并巍,讓指定包下的注解生效目木,由IOC容器同意管理-->
<context:component-scan base-package="com.study.controller"/>
<!--試圖解析器-->//加群1025684353一起吹水聊天
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!--前綴-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后綴-->
<property name="suffix" value=".jsp"/>
</bean>
<!--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>
</beans>
4、編寫實體類
package com.study.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private int age;//加群1025684353一起吹水聊天
private String sex;
}
領(lǐng)取資料
5懊渡、編寫Controller
package com.study.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.study.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller
@RestController //標(biāo)注這個類不會走視圖解析器刽射,直接返回數(shù)據(jù)
public class UserController {
@RequestMapping(value = "/j1")
//@ResponseBody //不會走視圖解析器,會直接返回一個字符串
public String json1() throws JsonProcessingException {
//jackson包,ObjectMapper方法
ObjectMapper mapper = new ObjectMapper();
//創(chuàng)建一個對象
User user = new User("張三",3,"男");
String str = mapper.writeValueAsString(user);
return str;//加群1025684353一起吹水聊天
}
}
領(lǐng)取資料
二誓禁、使用FastJson
1、導(dǎo)入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
2肾档、編寫Controller
@RequestMapping("/j4")
public String json4() throws JsonProcessingException {
//創(chuàng)建一個對象
User user = new User("張三",3,"男");
String s = JSON.toJSONString(user);
return s;
}