一、背景
今天 @段段 在技術群裡提出一個問題:”如何實作JSON的格式美化“。
具體含義是,通過後端代碼實作将緊湊的JSON字元串變為更美觀的形式。
如下面的JSON字元串
{\"age\":0,\"name\":\"張三\",\"sex\":\"女\"
![]()
細微之處見真章之JSON格式美化一、背景二、步驟三、思考
轉化為如下圖的效果:
這個問題知道API的人或許一下就可以答上來,不知道的人可能第一反應就是百度。
那麼是否有更好的解決方式呢?
本文重點講述該如何思考和解決這個問題,重點不是問題本身,希望能夠對大家有點啟發。
二、步驟
解決這個問題的辦法有很多種,下面是我建議的步驟。
最核心的思路是:先找,實在找不到自己造輪子。
特别特别特别強調,先思考,再行動。
2.1 先思考
JSON 字元串美化的功能在很多網頁工具類裡常用,按理說JSON的庫是不是應該提供了這種功能呢?
那麼該如何去找是否有這種功能呢??
首先想到的就是關鍵字,由于之前網頁上用過提供類似功能的網頁,功能描述都是”格式化“,”美化“。
而且我們思考一下,如果有這種功能應該叫啥名呢?是不是也應該叫”格式化/美化“呢?
沿着這個思路,我們去fastjson Jar包或者源碼中搜尋: beautify / format關鍵詞。
然後找到疑似相關功能的代碼。
找到相關單測,運作看看效果:
發現正是我們想要的。
2.2 從類出發
如果fastjson提供了格式化或者美化字元串的方法,最有可能和普通轉字元串的功能在一個類裡,是以也很容易找到這個函數。
public static String toJSONString(Object object, boolean prettyFormat) {
if (!prettyFormat) {
return toJSONString(object);
}
return toJSONString(object, SerializerFeature.PrettyFormat);
}
2.3 看官方文檔
講真 fastjson 的代碼注釋很少,嚴重吐槽!!而且官方文檔非常不全,嚴重吐槽!!
對我們幫助不大。
2.4 借助搜尋引擎
搜 fastjson格式化或者美化,或者用英文從 google or sof裡搜,可以找到很多線索。
https://github.com/alibaba/fastjson/issues/1502.5 問别人
通過前面幾個步驟,這個步驟幾乎用不到了。
三、思考
最近在思考新人如何更快更好地進階,很多多人着急學習,卻從來不思考該如何學習,我想最重要的一點應該轉變思維意識。
1 從學習具體和記憶具體知識為主,轉向學習思考和解決問題的方法為主。
2 學習時不要隻關心常用的功能,應該時常進源碼看一眼,打開函數清單,檢視一些非常用的功能。
3 應該從設計者的角度思考問題,想一下它應該有哪些功能,如果我設計我會怎麼寫,然後和源碼進行對比,體會才能深刻,才能不斷糾正自己的思路,像優秀的代碼靠攏。
如果是直接學習,直接看部落格分析,就像直接看答案做題,看着啥都會,其實根本沒掌握,看完容易忘,記住不會用。
4 很多問題再開口問别人之前,要 wait一下,檢查一下常見的步驟是否自己都用過了?如看源碼、看官方文檔、看單測、搜尋引擎搜尋等。
然而很多人輕視方法,很多人學了很久卻不思考該如何學習,很多人學了很久卻從不看源碼,很多人學了很久從不看官方文檔,很多人問問題之前都不思考,很多人找别人幫助之前甚至都沒有表述清楚問題。