前后端角度看接口(什么是json)?


什么是JSON?

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規范)的一個子集,采用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。

json前兩個字就是js,說明其與js必然存在一些聯系,其實json可以理解為盛裝js數據的一個容器(不是只能裝js的,不要扣這些),說白了,就是儲存數據的一個小玩意兒。其實如果你身邊有搞前端的同學,不難發現,他們會經常說接口、報文,對於一個后端小白的我來說,也很想明白這究竟是個什么東東,最近工作一直做前后端開發,所以跟json結下了緣。

前端中json大致是形如這個樣子的,就是冒號左邊一個名字(鍵),右邊是具體的值(值),其實就是鍵值對。。是不是很簡單,如果不簡單也不會這么火了↓↓↓

var json = {"xxx":"xxx"};

右邊可以是一個數字,可以是一個對象,可以是字符串,可以是一個數組,可以是一個json(套娃),我給大家舉個例子大家就明白了,既然是容器,必然要有大的,有小的,啥都能裝

裝數字:

var feeInfoList = {"num":11};

通過feeInfoList.num就可以拿到num對應的值:11,很簡單吧?
裝字符串:

var feeInfoList = {"name":"小斌哥"};

通過feeInfoList.name,就能拿到帶雙引號的"小斌哥"啦~
裝對象:

var 小斌哥= {"name":"小斌哥", "age":21, "sex":"爺們"};

小斌哥這個對象里面包含姓名、年齡和性別,多個數據可以通過逗號隔開,因此,小斌哥這個對象就生成了!!
裝數組

var array = {"array":[
	{
		"name":"小斌哥",
		"sex":"爺們",
		"age":21
	},
	{
		"name":"貂蟬",
		"sex":"美女",
		"age":18
	}
]};

直接看可能比較懵,但是仔細看,鍵是"array",值就是后面的一大坨,對嗎?那一大坨拆開看,是不是就是一個個的對象,對象之間用逗號隔開了,對象里面有姓名、性別和年齡,每一個屬性都是用鍵值對裝的,並且用逗號隔開,是不是很容易呢,其實如果別人給你一大堆報文,可以用utools(一個軟件),直接復制進去,就可以清楚的看到json格式了,很方便~
裝json:

var json = {"json":{"json":{
			"json":11
		}
	}
}

哈哈,所謂套娃,就是可以在值那里一直用json,所以想拿到11,就需要通過:json.json.json.json,就能取到11了,不過這只是一個演示,除非真的有這樣的需求,要不然還是不要這么玩兒,他畢竟只是一個容器,以盛裝數據並且簡潔易懂為主~

為什么需要JSON?

等到去了公司做前后端分離的項目的時候,大家會發現前端與后端交互大部分都是接口(其實就是用json裝的一些數據),舉個栗子,用戶在瀏覽器輸入了用戶名和密碼要登錄,這個輸入的用戶名和密碼肯定會發到后台,后台進行一系列的處理並且給前台反饋結果,畫個圖就是這樣的:
在這里插入圖片描述
總之前后端交互就是通過json報文,可以聯想一下最開始學javaWeb的時候我們是怎么進行前后端交互的:

	String name = request.getParameter("name");
	String pwd = request.getParameter("pwd");

在這里插入圖片描述
有沒有引起你的某種回憶,哈哈~
為什么不建議用servlet進行接收前端的數據呢?一個是負載壓力大,后端成了爹了,啥都要管,權重非常高,你每次接收前台的數據都需要初始化加載servlet各種亂七八糟的東西,之后才能進行處理;第二是耦合太高,等你花了半天勁寫完了代碼,需求發生變更,你要改controller層、dao層、service層,該改的不該改的你都得改,體驗過的童鞋麻煩點個贊。。

總結

大家可以看到,通過json,非常方便快捷地把一些復雜的對象和數據進行發送。每個公司肯定都對前端的ajax進行了封裝,所以不需要每次都

 $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"zhangsan","address":"bj"};  
        var data2={"userName":"lisi","address":"nj"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"userInfo/userUpd", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){ 
 				...	...
            } 
         }); 
    });  

使用起來也非常的方便~
另外阿里巴巴有一個fastjson,可以非常快速地把json序列化和反序列化:

String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化

大家可以試一下~
如果小伙伴們還有什么疑問歡迎留言~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM