漂亮的JSON革命

2021-02-24 21:48:58

如果更多的JSON工具支持真正漂亮的JSON格式会不会很好?现在就需要真正漂亮的JSON的选项!万岁!

如果那么简单就好了。在过去的十年中,JSON格式已变得非常流行,轻松地将XML作为首选格式。对我们来说,如果JSON的格式正确,那么JSON比XML更容易阅读。可悲的是,大多数用于查看或格式化JSON的工具似乎都停留在两种格式之一上。一种格式是单行格式,另一种是简单的扩展格式。尽管还有一些工具,但还有其他选择。

oj应用程序是提供更多选项的一种工具,它是golang OjG软件包的一部分。 oj应用程序将用于说明JSON格式的范围,从丑陋到漂亮的JSON。跟随并在每个步骤中尝试您喜欢的JSON示例。

尝试最小化JSON文档的大小时,使用紧密的JSON格式。它是传输和存储JSON的首选格式,因为它占用更少的带宽和更少的磁盘空间。对于观看而言,眼睛很难找到兴趣元素,也很难确定元素边界。它必须是所有JSON格式中最丑的。

许多软件包都将其称为“漂亮”是一种扩展格式,其中每个元素,每个数组和对象的开始都位于单独的行上。核心golang json.MarshalIndent()函数产生了这种格式的示例。该格式占用了太多垂直空间,因此必须剪掉右边的示例,以避免在本文中仅填充大量空白。

使用扩展的(pretty?)格式,确定元素边界当然更容易,但是您需要大屏幕或擅长滚动查找所需内容。因此,扩展格式比单行格式要先进一些,这使它更漂亮,但这是一项艰巨的努力,并非没有缺陷。

$ oj -i 2 colors.json {" colors&#34 ;: [{" color&#34 ;:" black&#34 ;," hex&#34 ;:&#34 ;#000&#34 ;," rgb&#34 ;: [0,0,0]},{" hex&#34 ;:"#f00&#34 ;," rgb& #34 ;: [255,0,0]," color&#34 ;:" red" },...

在许多实现中,无论是作为golang映射,Ruby Hash,Python dict还是您所选择的语言使用的JSON对象,对象元素的顺序都是随机的。这使得在视觉上扫描一组元素并在每个JSON对象中挑选出相同的键控元素变得更加困难。大脑擅长挑选视觉或空间图案,但是如果每次每次都更改布局,就没有图案可以拾取。必须进行视觉扫描,查看每个按键,直到识别出目标为止。通过按元素键对JSON对象成员进行排序,可以使JSON更漂亮。

排序的扩展格式仅是扩展格式的一种,但它仍然要占用大量垂直空间。如果有人手工编写JSON,他们可能不会选择将JSON扩展到大多数软件包或库所能达到的水平。

$ oj -i 2 -s colors.json {" colors&#34 ;: [{" color&#34 ;:" black&#34 ;、" hex&#34 ;:& #34;#000&#34 ;," rgb&#34 ;: [0,0,0]},{" color&#34 ;:" red&#34 ;,"十六进制&#34 ;:"#f00&#34 ;、" rgb&#34 ;: [255,0,0]},...

理想的漂亮JSON漂亮的是让格式看起来像是人类键入的格式。好吧,学究的人类没有犯错。就像Goldilocks一样,目标是在单行和完全扩展的格式之间找到最佳的中间点。 oj使用的算法认为建议边缘不超过一条,并且单行允许的最大元素深度。这两个参数被指定为浮点数,其中整数部分是边,小数部分或十分之一是单行上的最大深度。有了这两个参数,就可以实现合理的人文风格格式,并且效果看起来还不错。

$ oj -p 80.3 colors.json {" colors&#34 ;: [{" color&#34 ;:" black&#34 ;," hex&#34 ;:&#34 ;#000&#34 ;," rgb&#34 ;: [0,0,0]},{" color&#34 ;:" red&#34 ;," hex&# 34 ;:"#f00&#34 ;," rgb&#34 ;: [255,0,0]},{" color&#34 ;:" yellow&#34 ;, " hex&#34 ;:"#ff0&#34 ;、" rgb":[255、255、0]},{" color&#34 ;:&#34 ; green&#34 ;," hex&#34 ;:"#0f0&#34 ;," rgb&#34 ;: [0,255,0]},{" color&# 34 ;:" cyan&#34 ;," hex&#34 ;:"#0ff&#34 ;," rgb&#34 ;: [0,255,255]},{ "颜色&#34 ;:"蓝色&#34 ;,"十六进制&#34 ;:"#00f&#34 ;," rgb&#34 ;: [0,0 ,255]},{" color&#34 ;:"洋红色&#34 ;," hex&#34 ;:"#f0f&#34 ;," rgb&#34 ;:[255,0,255]},{" color&#34 ;:" white&#34 ;," hex&#34 ;:"#fff&#34 ;,& #34; rgb":[255,255,255]}]}

使用人类样式格式,JSON示例非常易读,但可以使其更漂亮。至少对于我们这些人来说,比肤色还好。使用-c选项或-b选项,格式化的JSON现在具有颜色。尽管颜色确实使输出更漂亮,但它们也使眼睛更容易分辨键,字符串,布尔值和数字。尝试一下,查看非彩色的JSON和彩色的,然后选择您喜欢的颜色名称。也许不是必杀技,但与第一行格式相比,彩色漂亮输出是完全不同的水平。

$ oj -p 80.3 -c colors.json {" colors" :[{" color" :"黑色" ," hex" :"#000" ,&rgb" :[0,0,0]},{" color" :" red" ," hex" :"#f00" ,&rgb" :[255,0,0]},{" color" :"黄色" ," hex" :"#ff0" ,&rgb" :[255,255,0]},{" color" :"绿色" ," hex" :"#0f0" ,&rgb" :[0,255,0]},{" color" :"青色" ," hex" :"#0ff" ,&rgb" :[0,255,255]},{" color" :"蓝色" ," hex" :"#00f" ,&rgb" :[0,0,255]},{" color" :"洋红色" ," hex" :"#f0f" ,&rgb" :[255,0,255]},{" color" :"白色" ," hex" :"#fff" ,&rgb" :[255,255,255]}]}

用颜色排序人类风格与它变得一样好,但如果我们偏离严格的JSON格式,那么拍摄JavaScript和GraphQL允许的一些快捷方式允许未引用的字符串和可选的逗号。森格式是这种格式。 OJ应用程序支持以森格式解析和编码。它不是JSON,但从SEN到JSON的转换而反向是无损的。摆脱额外的报价和不必要的逗号使数据更容易阅读,并且作为森格格式占用的侧面,所以与JSON相比,传输和磁盘空间要求减少。

$ oj -p 80.3 -c -c -sen colors.json {颜色:[{颜色:黑色十六进制:"#000" RGB:[0 0 0]} {颜色:红色十六进制:"#f00" RGB:[255 0 0]} {颜色:黄色十六进制:"#ff0" RGB:[255 255 0]} {颜色:绿色十六进制:"#0f0" RGB:[0 255 0]} {颜色:青色十六进制:"#0FF" RGB:[0 255 255]} {颜色:蓝色十六进制:"#00f" RGB:[0 0 255]} {颜色:洋红色十六进制:"#f0f" RGB:[255 0 255]} {颜色:白色十六进制:" #fff" RGB:[255 255 255]}]}}}

美在旁观者的眼中。我的偏好是漂亮的森森格式。你可能有不同的偏好,但是,让'革命一起继续革命,并在那里获得更漂亮的杰克。在网页和电子邮件中使用漂亮的JSON。对于那里的工具构建器,为漂亮的JSON提供选择。

注意:如果您想知道彩色的JSON HTML是否用手写入或着色,则不是。 OJ的-HTML选项用于生成本文的彩色HTML。当网页或电子邮件中包括JSON时,它' s affic选项。