java的map和json的關係

當使用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 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章