當使用map或者fastjson的jsonObject的對象時發現,這兩個都可以生成json格式的字符串返回前端,那麼問題來了,這兩種有啥區別,既然map可以生成json那麼fastjson和jackjson用來幹啥呢。
仔細研究我先了我的理解的錯誤所在。
首先就是map對象在前端生成的json字符串是經過jackson處理的,map對象是不滿足json格式的。
如
可以看到在控制檯輸出的是不滿足json格式的,因爲json格式要求key必須是String,但是我之前看到前端調用返回的效果是帶雙引號的
原因是使用了RestController註解,底層使用jsckson把我們的map封裝成了json格式,所以我們的key都有雙引號,因此我們可以在有restController註解的情況下使用map直接返回的結果就是json而不用再次轉爲json
但是,當沒有@restController時我們還是老老實實使用json框架如jsonObject(fastjson的類)把map轉爲json返回纔可以。
需要注意的點是我們的map可以把null值返回前端,jackObject也是可以的,只不過在控制檯打印的時候看不到而已,所以map在restController註解下就相當於json框架的效果生成標準的json對象,否則要用框架轉一下成json,。
還有一點要注意的是,我們使用的Jackson或者fastjson底層其實還是hashmap
最後需要明確的是map是一種對象,而json是一種規範,我們進行數據傳輸的時候就是傳輸的符合json規範的map,而jackson和fastjson就實現了這個功能。
一、數據格式不同
1、map類型:可以使用匿名對象找到一個key對應的value。
2、json類型:是一種輕量級的數據交換格式。
二、數據處理方式不同
1、map類型:將鍵映射到值的對象。一個映射不能包含重複的鍵;每個鍵最多隻能映射到一個值。
2、json類型:基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。

三、特點不同
1、map類型:提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關係集的形式查看某個映射的內容。
2、json類型:潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率