List集合轉JSONObject

天下沒有收費的bug發表於2020-12-28

以前寫程式碼喜歡用Map拼接返回去給前端,這樣得到的也是一個標準的JSON,今天先不說Map的優缺點,我們就來說說JSONObject的使用,我用的是阿里的fastjson,先上程式碼,當我們需要巢狀程式碼的時候,看需求:

 

 

由於sessionData後面是{},所以後面的物件必須是一個JSONObject,如果是sessionData後面是[]就可以使用JSONArray。一般sessionDataExpires,sessionDataKey,sessionDataValue欄位都是從快取或資料庫中查出來的,我們查出來的資料都習慣用List<T>去接收,那麼問題就來了,List物件怎麼轉成JSONObject呢?由於我翻了百度好幾頁都沒有我想要的答案,所以才有了這篇部落格。

要知道List物件怎麼轉成JSONObject,我們直接來看原始碼即可,在idea中把所有JSONObject的方法都.出來:

 

在所有方法中,我們很容易看到哪些方法是返回了一個JSONObject的,而這個方法正是我們需要的,我們先看到parseObject這個方法,他返回的就是一個JSONObject

 

 

找到了parseObject方法,但是問題又來了,我們的引數是List,但是parseObject方法接收的引數是一個String型別(這個Stirng是JSON格式的String,不能任意寫)。那我們就繼續點(.)方法,再找我們需要的方法:

 

 

這裡我們可以看到toJSONString方法,傳入要給Objec物件,就能得到一個String型別的結果,由於一切物件,不管是List ,Map還是其他物件,都屬於Object物件,所以我們就可以使用toJSONString這個方法來滿足我們的要求,最後看一下程式碼:

1         List list = new ArrayList(16);
2         JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list));

這裡我們得到的result就是一個JSONObject格式的資料了,最後在通過一個JSONObject來拼接,就能得到我們的最終效果了,看程式碼:

1         List list = new ArrayList(16);
2         JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list));
3         JSONObject data = new JSONObject();
4         data.put("allMenuList",result);

 

寫到這裡,我只能說真香!順帶說一句,這裡主要是理解怎麼通過idea把方法都列出來,並找到自己想要的方法,這就是別人不用看原始碼就能很快上手一門技術的原因之一,只要看懂物件裡面有什麼方法,哪些是你需要用到的方法,你就離大神又進一步了。

 

相關文章