之前寫代碼喜歡用Map拼接返回去給前端,這樣獲得的也是一個標準的JSON,今天先不說Map的優缺點,咱們就來講說JSONObject的使用,我用的是阿里的fastjson,先上代碼,當咱們須要嵌套代碼的時候,看需求:前端
因爲sessionData後面是{},因此後面的對象必須是一個JSONObject,若是是sessionData後面是[]就能夠使用JSONArray。通常sessionDataExpires,sessionDataKey,sessionDataValue字段都是從緩存或數據庫中查出來的,咱們查出來的數據都習慣用List<T>去接收,那麼問題就來了,List對象怎麼轉成JSONObject呢?因爲我翻了百度好幾頁都沒有我想要的答案,因此纔有了這篇博客。數據庫
要知道List對象怎麼轉成JSONObject,咱們直接來看源碼便可,在idea中把全部JSONObject的方法都.出來:json
在全部方法中,咱們很容易看到哪些方法是返回了一個JSONObject的,而這個方法正是咱們須要的,咱們先看到parseObject這個方法,他返回的就是一個JSONObject緩存
找到了parseObject方法,可是問題又來了,咱們的參數是List,可是parseObject方法接收的參數是一個String類型(這個Stirng是JSON格式的String,不能任意寫)。那咱們就繼續點(.)方法,再找咱們須要的方法:session
這裏咱們能夠看到toJSONString方法,傳入要給Objec對象,就能獲得一個String類型的結果,因爲一切對象,無論是List ,Map仍是其餘對象,都屬於Object對象,因此咱們就能夠使用toJSONString這個方法來知足咱們的要求,最後看一下代碼:ide
1 List list = new ArrayList(16); 2 JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list));
這裏咱們獲得的result就是一個JSONObject格式的數據了,最後在經過一個JSONObject來拼接,就能獲得咱們的最終效果了,看代碼:idea
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把方法都列出來,並找到本身想要的方法,這就是別人不用看源碼就能很快上手一門技術的緣由之一,只要看懂對象裏面有什麼方法,哪些是你須要用到的方法,你就離大神又進一步了。spa