寫代碼喜歡用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把方法都列出來,並找到自己想要的方法,這就是別人不用看源碼就能很快上手一門技術的原因之一,只要看懂對象里面有什么方法,哪些是你需要用到的方法,你就離大神又進一步了。