史上最全SpringMVC教程,從零開始帶你深入♂學(xué)習(xí)(四)——JSON

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>

在IDEA中使用瀏覽器打開恬总,查看控制臺輸出前普!

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一起吹水聊天
    }
}

6剃执、啟動測試


領(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;
}

3摹恰、測試結(jié)果

最后辫继,祝大家早日學(xué)有所成,拿到滿意offer俗慈,快速升職加薪姑宽,走上人生巔峰。 可以的話請給我一個三連支持一下我喲闺阱,我們下期再見

領(lǐng)取資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炮车,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酣溃,更是在濱河造成了極大的恐慌瘦穆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赊豌,死亡現(xiàn)場離奇詭異扛或,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碘饼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門熙兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艾恼,你說我怎么就攤上這事黔姜。” “怎么了蒂萎?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淮椰。 經(jīng)常有香客問我五慈,道長,這世上最難降的妖魔是什么主穗? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任泻拦,我火速辦了婚禮,結(jié)果婚禮上忽媒,老公的妹妹穿的比我還像新娘争拐。我一直安慰自己,他們只是感情好晦雨,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布架曹。 她就那樣靜靜地躺著,像睡著了一般闹瞧。 火紅的嫁衣襯著肌膚如雪绑雄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天奥邮,我揣著相機(jī)與錄音万牺,去河邊找鬼罗珍。 笑死,一個胖子當(dāng)著我的面吹牛脚粟,可吹牛的內(nèi)容都是我干的覆旱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼核无,長吁一口氣:“原來是場噩夢啊……” “哼扣唱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厕宗,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤画舌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后已慢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曲聂,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年佑惠,在試婚紗的時候發(fā)現(xiàn)自己被綠了朋腋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膜楷,死狀恐怖旭咽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赌厅,我是刑警寧澤穷绵,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站特愿,受9級特大地震影響仲墨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揍障,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一目养、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毒嫡,春花似錦癌蚁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咬摇,卻和暖如春洽洁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菲嘴。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工饿自, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留汰翠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓昭雌,卻偏偏與公主長得像复唤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烛卧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容