细微之处见真章之JSON格式美化

2021-08-31 15:00:47 浏览数 (1)

一、背景

今天 @段段 在技术群里提出一个问题:”如何实现JSON的格式美化“。

具体含义是,通过后端代码实现将紧凑的JSON字符串变为更美观的形式。

如下面的JSON字符串

{"age":0,"name":"张三","sex":"女"

转化为如下图的效果:

这个问题知道API的人或许一下就可以答上来,不知道的人可能第一反应就是百度。

那么是否有更好的解决方式呢?

本文重点讲述该如何思考和解决这个问题,重点不是问题本身,希望能够对大家有点启发。

二、步骤

解决这个问题的办法有很多种,下面是我建议的步骤。

最核心的思路是:先找,实在找不到自己造轮子。

特别特别特别强调,先思考,再行动。

2.1 先思考

JSON 字符串美化的功能在很多网页工具类里常用,按理说JSON的库是不是应该提供了这种功能呢?

那么该如何去找是否有这种功能呢??

首先想到的就是关键字,由于之前网页上用过提供类似功能的网页,功能描述都是”格式化“,”美化“。

而且我们思考一下,如果有这种功能应该叫啥名呢?是不是也应该叫”格式化/美化“呢?

沿着这个思路,我们去fastjson Jar包或者源码中搜索: beautify / format关键词。

然后找到疑似相关功能的代码。

找到相关单测,运行看看效果:

发现正是我们想要的。

2.2 从类出发

如果fastjson提供了格式化或者美化字符串的方法,最有可能和普通转字符串的功能在一个类里,因此也很容易找到这个函数。

代码语言:javascript复制
   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一下,检查一下常见的步骤是否自己都用过了?如看源码、看官方文档、看单测、搜索引擎搜索等。

然而很多人轻视方法,很多人学了很久却不思考该如何学习,很多人学了很久却从不看源码,很多人学了很久从不看官方文档,很多人问问题之前都不思考,很多人找别人帮助之前甚至都没有表述清楚问题。

0 人点赞