日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

json string 格式_GO小知识之如何做JSON美化

發布時間:2024/8/23 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 json string 格式_GO小知识之如何做JSON美化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經常有些小知識想分享出來,但又構不成體系,一直覺得文章形式發出不太合適。準備以 "知乎想法" 分享出來,但發現代碼展示不太友好。還是發文章吧,該類分享將以 "小知識" 為前綴。

后端http接口測試常需要打印 JSON 返回,但是默認的json展示形式是緊湊型的,不易閱讀,或許很多人習慣于使用在線格式化工具。但如果能用代碼直接 JSON 美化,為什么還要多開一次瀏覽器呢?

非string類型的結構體、map等類型的Marsh美化

比如有這樣一個map或者結構體。

u := map[string]interface{}{"id": 1,"name": "poloxue", }

使用GO內置的包 encoding/json。

如果用 json.Marshal 轉化,代碼如下:

uglyBody, err := json.Marshal(u) if err != nil {panic(err) } fmt.Printf("%sn", uglyBody)

打印結果:

{"id":1,"name":"poloxue"}

效果并不友好,如果是復雜的 map,結果將非常亂。

可以使用json.MarchalIndent,代碼如下:

body, err := json.MarshalIndent(u, "", "t") if err != nil {panic(err) } fmt.Printf("%sn", body)

t表示縮進效果。最終的結果如下:

{"id": 1,"name": "poloxue" }

看著舒服了很多。

JSON的string如何美化?

如果是一個 JSON 字符串怎么辦?比如 上面示例中的uglyBody的結果。

方法一

使用 encoding/json 包中 Indent 方法。

代碼如下:

var out bytes.Buffer err = json.Indent(&out, uglyBody, "", "t") if err != nil {panic(err) } fmt.Printf("%sn", out.String())

結果如下:

{"id": 1,"name": "poloxue" }

方法二

github上面有人實現了一個 JSON pretty的包。

地址在:https://github.com/tidwall/pretty

使用非常簡單,代碼如下:

fmt.Printf("%sn", pretty.Pretty(uglyBody))

結果如下:

{"id": 1,"name": "poloxue" }

這個庫沒有依賴 encoding/json,純代碼解析字符串。而且還可以做 color 美化。

color美化的示例代碼:

fmt.Printf("%sn", pretty.Color(uglyBody, pretty.TerminalStyle)) fmt.Printf("%sn", pretty.Color(pretty.Pretty(uglyBody), pretty.TerminalStyle))

pretty.TerminalStyle表示打印控制臺的著色風格,結果如下:

SO 漂亮!

一個JSON美化小工具

利用上面介紹的這些,開發一個非常簡單的小工具,代碼如下:

package mainimport ("flag""fmt""github.com/tidwall/pretty" )var help bool var uglyJson string var indent stringfunc init() {flag.BoolVar(&help, "h", false, "show help")flag.StringVar(&uglyJson, "s", "", "json string")flag.StringVar(&indent, "i", "t", "indent string, default tab") }func main() {flag.Parse()if help {fmt.Printf("usage:nn")flag.PrintDefaults()return}var Options = &pretty.Options{Width: 80, Prefix: "", Indent: indent, SortKeys: false}fmt.Printf("%sn", pretty.Color(pretty.PrettyOptions([]byte(uglyJson), Options), pretty.TerminalStyle)) }

編譯成功之后,就可以用了。比如生成的可執行文件名為 prettyjson,美化 {"id":1,"name":"poloxue"}。

$ ./jsonpretty -s '{"id":1,"name":"poloxue"}'

效果如下:

總結

以上是生活随笔為你收集整理的json string 格式_GO小知识之如何做JSON美化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。