時間就是金錢,時間就是生命,時間是不可再生資源
背景介紹:
在一開發者活動社區,
有人提問如何向后台傳送數組和對象嵌套列表的數據格式,我一想這不就是老生常談的話題嗎,
於是給他解決了后,在想,為什么不把以前的解決方式寫到網了呢,天下無稀罕事,都是重復性的多。新出來的開發者也會遇到同樣的問題(就是說老程序們曾經出現的問題又在新開發者身上重新演了一遍,只是換了人而已)
,我們把以前解決問題的方式方法寫到網上,這樣新的開發者們就不用再花時間研究了,可以直接套,提升效率,節省時間。
前端向后端傳數據,無非就三種(可能會有變體或組合):普通字符串或整數,數組型實體類型, 對象嵌套型
1. 前台向后台傳送普通字符串或數字或布爾,就不說了,沒什么好講的
2,. 前台向后端傳數組格式或變體的數據。
2.1 像List<String>或List<Integer>,有三種方式,看個人喜歡或公司規范自行選擇
2.1.1 第一種方式,前端代碼:
后端代碼:
2.1.2 第二種方式,前台通過JSON.stringify轉化為字符串,(我主要是用此種方式傳這種格式的數據)例如
后端代碼:
搜索搜出來的效果圖:
2.1.3 第三種方式,前台也可以傳這種類型的字符串(我偶爾用這樣方式,只是不太喜歡數組)
后端這樣解析
如圖示:
2.2 像List<實體類>或List<Hashmap>的數據格式,有三種方式,看個人喜歡或公司規范自行選擇
2.2.1 以傳list<實體類>為例
java實體類
前端JavaScript構造數據
后端Controller的java代碼,只寫中點解析數據
其實也可以不用實體類,也可以用Hashmao(看個人意願,要是公司有代碼量要求,可以用上面的解析),沒有代碼量要求,那就:
好多90%都是組裝的Hashmap,不喜歡維護那么多類,單重數據結構上看,HashMap是動態的實體類。
最后也可以用spring的原生注解接受:
3 實體類里有list,嵌套了一層(list純數字或list對象)
3.1 舉個工作中的例子,試卷有幾十道題目,教程有十幾個章節
嵌套類如下
前端代碼:
后端接受主要代碼:
不過我用的是分解法傳輸,主要也是fastjson
就先寫整理這么多了,囊括了各個傳輸數據的格式,開發就是把數據解析來解析去,組裝數據(特別是可視化項目) 。
總結下: 前后端交互數據就這三種數據格式
1, 單體的字符串,數字,布爾
2. 數組,list型
3. 實體類,HashMap型(按傳輸數據格式來說hashmap其實也算是動態實體,因為字段可增可減),組合嵌套型數據格式
早年開發時,數據交互是XML數據 、 來回構造解析
如今是json構造數據來回折騰,不兼容
看了此文,前后端交互的數據模型格式解析,也就到頭了!!!