一、背景
今天 @段段 在技术群里提出一个问题:”如何实现JSON的格式美化“。
具体含义是,通过后端代码实现将紧凑的JSON字符串变为更美观的形式。
如下面的JSON字符串
{\"age\":0,\"name\":\"张三\",\"sex\":\"女\"
转化为如下图的效果:
这个问题知道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/150
2.5 问别人
通过前面几个步骤,这个步骤几乎用不到了。
三、思考
最近在思考新人如何更快更好地进阶,很多多人着急学习,却从来不思考该如何学习,我想最重要的一点应该转变思维意识。
1 从学习具体和记忆具体知识为主,转向学习思考和解决问题的方法为主。
2 学习时不要只关心常用的功能,应该时常进源码看一眼,打开函数列表,查看一些非常用的功能。
3 应该从设计者的角度思考问题,想一下它应该有哪些功能,如果我设计我会怎么写,然后和源码进行对比,体会才能深刻,才能不断纠正自己的思路,像优秀的代码靠拢。
如果是直接学习,直接看博客分析,就像直接看答案做题,看着啥都会,其实根本没掌握,看完容易忘,记住不会用。
4 很多问题再开口问别人之前,要 wait一下,检查一下常见的步骤是否自己都用过了?如看源码、看官方文档、看单测、搜索引擎搜索等。
然而很多人轻视方法,很多人学了很久却不思考该如何学习,很多人学了很久却从不看源码,很多人学了很久从不看官方文档,很多人问问题之前都不思考,很多人找别人帮助之前甚至都没有表述清楚问题。