總結下最近的工做遇到的點:
入參複雜 JSON 層層嵌套,Java 怎麼優雅的處理。json
JSON 是相似 XML 用於存儲和交互文本信息。但優於 XML ,其更小,更快,更易懂和解析。其是一個無序的」名稱/值」對的集合。由數組
1框架 2socket 3性能 4spa 5code |
|
組成。而後 名稱值對 以逗號分隔。
是一個正則匹配替換的操做。一個很長很複雜的 JSON 入參,經過正則匹配其 content 對應的值中的圖片地址並替換。
框架選型 – fastjson
(fastjson 是一個性能很好的 Java 語言實現的 JSON 解析器和生成器,來自阿里巴巴的工程師開發。)
a . 思路
Java 是面向對象的語言。我要利用 fastjson 把複雜的 JSON 寫出其對應的 BO 對象,而後正則替換 content 內容(即 operatorContent 方法),而後從新生成 JSON 響應。即下面代碼操做:
1 2 3 |
|
好處:代碼易讀,容易維護
壞處:BO 實在是太複雜,並且不少數組嵌數組。PHP -> Java 服務化過程當中不少不可控,容易出 BUG。
涉及的API :
序列化對象到 JSON:
1 |
|
反序列化 JSON 到對象:
1 |
|
摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 但願轉載,保留摘要,謝謝!
b . 思路
只是替換操做,因此不用太考慮代碼易讀性。直接利用 fastjson 直接轉出 JSONArray 對象,而後操做該對象便可。JSONArray 對象本質就是一個 List<Object> 以下代碼:
1 2 3 4 |
|
具體僞代碼以下:
1 2 3 4 5 |
|
好處:不用關心其餘複雜的鍵值對,目標只關注要替換的節點名稱。
壞處:代碼不易讀,相對也還容易維護。
涉及的API :
替換對應的節點名稱的值:
1 |
|
反序列化 JSON 到 JSONArray 對象:
1 |
|
思路 c d e …
根據服務化場景,在不肯定入參 JSON 的複雜度狀況下,選擇了思路 b.這篇實際上是工做上的小小結。任何技術,任何框架的 API 是否好用優雅,是具體場景決定的。
如以上文章或連接對你有幫助的話,別忘了在文章結尾處評論哈~ 你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章。