最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

作為一種強數(shù)據(jù)類型的語言, Golang 對 json 的處理很麻煩。已知 json 的數(shù)據(jù)類型有:

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

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

原有方式

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

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

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

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

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

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

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

推薦: GJSON 處理

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

總結(jié) 

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

相關(guān)文章

  • Go基礎(chǔ)教程系列之import導(dǎo)入包(遠(yuǎn)程包)和變量初始化詳解

    Go基礎(chǔ)教程系列之import導(dǎo)入包(遠(yuǎn)程包)和變量初始化詳解

    這篇文章主要介紹了Go基礎(chǔ)教程系列之import導(dǎo)包和初始化詳解,需要的朋友可以參考下
    2022-04-04
  • 詳解golang?defer?閉包?匿名函數(shù)

    詳解golang?defer?閉包?匿名函數(shù)

    這篇文章主要介紹了golang?defer?閉包?匿名函數(shù)的相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Golang指針的操作以及常用的指針函數(shù)

    Golang指針的操作以及常用的指針函數(shù)

    本文主要介紹了Golang指針的操作以及常用的指針函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Golang字符串拼接的性能以及原理詳解

    Golang字符串拼接的性能以及原理詳解

    最近在做性能優(yōu)化,有個函數(shù)里面的耗時特別長,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在golang里面其實有很多種實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Golang字符串拼接的性能以及原理的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Golang切片Slice功能操作詳情

    Golang切片Slice功能操作詳情

    這篇文章主要介紹了Golang切片功能操作詳情,切片是一個擁有相同類型元素的可變長度的序列。它是基于數(shù)組類型做的一層封,切片是一個引用類型,它的內(nèi)部結(jié)構(gòu)包含地址、長度和容量
    2022-09-09
  • Go調(diào)用C++動態(tài)庫實現(xiàn)車牌識別的示例代碼

    Go調(diào)用C++動態(tài)庫實現(xiàn)車牌識別的示例代碼

    本文主要介紹了如何利用C++中Opencv、TensorRT等庫編譯出動態(tài)庫供Go調(diào)用,再寫個簡單的api對上傳的車輛圖片進(jìn)行車牌識別,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 使用Golang打印特定的日期時間的操作

    使用Golang打印特定的日期時間的操作

    這篇文章主要給大家詳細(xì)介紹了如何使用Golang打印特定的日期時間的操作,文中有詳細(xì)的代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • Go?語言sort?中的sortInts?方法

    Go?語言sort?中的sortInts?方法

    這篇文章主要介紹了Go?語言sort?中的sortInts?方法,Go?的?sort?包實現(xiàn)了內(nèi)置和用戶定義類型的排序。我們將首先查看內(nèi)置函數(shù)的排序,西瓦嗯更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • 一文詳解如何使用Go語言生成二維碼

    一文詳解如何使用Go語言生成二維碼

    使用Go語言編程時,生成任意內(nèi)容的二維碼是非常方便的,下面這篇文章主要給大家介紹了關(guān)于如何使用Go語言生成二維碼的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Golang全局變量加鎖的問題解決

    Golang全局變量加鎖的問題解決

    這篇文章主要介紹了解決Golang全局變量加鎖的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論

阳信县| 益阳市| 康马县| 遵化市| 彭州市| 蓝山县| 九江县| 社旗县| 和政县| 文山县| 晋宁县| 佛冈县| 博爱县| 上饶市| 中卫市| 达日县| 新干县| 栾城县| 大城县| 荣成市| 广平县| 常宁市| 英超| 内江市| 丰顺县| 荥阳市| 河西区| 青海省| 尼玛县| 海宁市| 松滋市| 井冈山市| 阜阳市| 巢湖市| 巫山县| 和田县| 独山县| 清涧县| 江油市| 石家庄市| 万山特区|