欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang中對(duì)json的優(yōu)雅處理方式

 更新時(shí)間:2023年06月30日 16:26:44   作者:一顆小小的石頭.  
這篇文章主要給大家介紹了關(guān)于Golang中對(duì)json的優(yōu)雅處理方式,解析JSON在golang中很麻煩,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

背景

作為一種強(qiáng)數(shù)據(jù)類(lèi)型的語(yǔ)言, Golang 對(duì) json 的處理很麻煩。已知 json 的數(shù)據(jù)類(lèi)型有:

  • 字符串
  • 數(shù)字
  • 數(shù)組
  • 字典
  • 上述類(lèi)型的嵌套

如果是弱數(shù)據(jù)類(lèi)型的語(yǔ)言,例如 js , Python等,不需要考慮類(lèi)型就直接可以使用。

原有方式

對(duì) json 的處理分為編碼和解碼。 編碼是把已有的數(shù)據(jù)對(duì)象轉(zhuǎn)為 json 對(duì)象, 解碼反之。

Golang 對(duì)編碼比較好處理,直接把數(shù)據(jù)對(duì)象放到原生的 json.Marshal() 函數(shù)中即可返回字節(jié)數(shù)組。但對(duì)于解碼來(lái)說(shuō),就比較復(fù)雜了。

轉(zhuǎn)化為 map[string]interface

golang 中的 interface 相當(dāng)于 Java 中的 Object, 什么都可以往里面放,但放進(jìn)去方便就意味著取出來(lái)很麻煩。

例如想要從這個(gè) json 字符串中取出 float64 類(lèi)型的 數(shù)學(xué)成績(jī),需要不斷的做類(lèi)型轉(zhuǎn)換和map取值判斷,非常復(fù)雜。

預(yù)定義結(jié)構(gòu)體 struct

預(yù)先定義一個(gè)結(jié)構(gòu)體,讓內(nèi)置的解碼函數(shù)來(lái)做屬性映射, 比上面一種方法方便和常見(jiàn)很多,但是需要預(yù)先知道數(shù)據(jù)的詳細(xì)結(jié)構(gòu),不然沒(méi)法定義出來(lái)這個(gè)結(jié)構(gòu)體。

推薦: GJSON 處理

  1. 軟性返回,也就是數(shù)據(jù)類(lèi)型如果對(duì)不上會(huì)返回對(duì)應(yīng)的零值,而非 err 或者 panic , 所以不需要一定要預(yù)先知道原始類(lèi)型。
  2. 提供多種數(shù)據(jù)類(lèi)型和對(duì)應(yīng)的 IsXXX() 判斷函數(shù),來(lái)輔助解決上面的零值問(wèn)題
  3. 路徑解析方便, 通過(guò)像弱數(shù)據(jù)類(lèi)型語(yǔ)言一樣 . 語(yǔ)法來(lái)做解析,極大的簡(jiǎn)化了 json 的解碼問(wèn)題。

總結(jié) 

到此這篇關(guān)于Golang中對(duì)json的優(yōu)雅處理方式的文章就介紹到這了,更多相關(guān)Golang對(duì)json優(yōu)雅處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang常見(jiàn)接口限流算法的實(shí)現(xiàn)

    golang常見(jiàn)接口限流算法的實(shí)現(xiàn)

    本文主要介紹了golang常見(jiàn)接口限流算法的實(shí)現(xiàn),包含固定窗口、滑動(dòng)窗口、漏桶和令牌桶,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • go:垃圾回收GC觸發(fā)條件詳解

    go:垃圾回收GC觸發(fā)條件詳解

    這篇文章主要介紹了go:垃圾回收GC觸發(fā)條件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • go mock模擬接口的實(shí)現(xiàn)

    go mock模擬接口的實(shí)現(xiàn)

    本文主要介紹了go mock模擬接口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Go語(yǔ)言如何生成PDF文件實(shí)例探究

    Go語(yǔ)言如何生成PDF文件實(shí)例探究

    這篇文章主要為大家介紹了Go語(yǔ)言生成PDF文件的實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例

    GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例

    這篇文章主要為大家介紹了GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang優(yōu)化目錄遍歷的實(shí)現(xiàn)方法

    golang優(yōu)化目錄遍歷的實(shí)現(xiàn)方法

    對(duì)于go1.16的新變化,大家印象最深的可能是io包的大規(guī)模重構(gòu),但這個(gè)重構(gòu)實(shí)際上還引進(jìn)了一個(gè)優(yōu)化,這篇文章要說(shuō)的就是這個(gè)優(yōu)化,所以本將給大家介紹golang是如何優(yōu)化目錄遍歷的,需要的朋友可以參考下
    2024-08-08
  • Golang環(huán)境變量設(shè)置和查看工具go env詳解

    Golang環(huán)境變量設(shè)置和查看工具go env詳解

    go env 是 Go 工具鏈中的一個(gè)命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對(duì)于理解、編譯和運(yùn)行 Golang 程序非常有用,本文就給大家簡(jiǎn)單的介紹一下Golang環(huán)境變量設(shè)置和查看工具go env,需要的朋友可以參考下
    2023-07-07
  • 詳解如何使用beego orm在postgres中存儲(chǔ)圖片

    詳解如何使用beego orm在postgres中存儲(chǔ)圖片

    這篇文章主要為大家介紹了如何使用beego orm在postgres中存儲(chǔ)圖片詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • golang中實(shí)現(xiàn)graphql請(qǐng)求的方法

    golang中實(shí)現(xiàn)graphql請(qǐng)求的方法

    這篇文章主要介紹了如何在golang中實(shí)現(xiàn)graphql請(qǐng)求,在本文中,我們介紹了如何使用gqlgen來(lái)構(gòu)建GraphQL服務(wù),需要的朋友可以參考下
    2023-04-04
  • 詳解Go 語(yǔ)言中的比較操作符

    詳解Go 語(yǔ)言中的比較操作符

    這篇文章專(zhuān)注于 6 個(gè)操作符,==,!=,<,<=,> 和 >=。我們將深入探討它們的語(yǔ)法和用法的細(xì)微差別,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08

最新評(píng)論