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

Golang中json和jsoniter的區(qū)別使用示例

 更新時(shí)間:2023年12月09日 11:03:32   作者:小小平不平凡  
這篇文章主要介紹了Golang中json和jsoniter的區(qū)別使用示例,本文給大家分享兩種區(qū)別,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

區(qū)別1: jsoniter除了支持字節(jié)數(shù)組與結(jié)構(gòu)體互轉(zhuǎn)外,還支持字符串與結(jié)構(gòu)體互轉(zhuǎn)

jsoniter使用示例:

package main
import (
	"fmt"
	"time"
	jsoniter "github.com/json-iterator/go"
	"github.com/json-iterator/go/extra"
)
type Order struct {
	Id         int64             `json:"id"`
	OrderId    string            `json:"order_id"`
	Money      float64           `json:"money"`
	CreateTime time.Time         `json:"create_time"`
	Extend     map[string]string `json:"extend"`
}
func main() {
	order := Order{
		Id:         666,
		OrderId:    "12345678",
		Money:      99.99,
		CreateTime: time.Now(),
		Extend:     map[string]string{"name": "張三"},
	}
	// 使用1:直接轉(zhuǎn)成字符串
	jsonStr, _ := jsoniter.MarshalToString(order)
	fmt.Println("jsonStr:", jsonStr)
	// 使用2:直接轉(zhuǎn)成字節(jié)數(shù)組
	jsonByteArr, _ := jsoniter.Marshal(order)
	fmt.Println("jsonByteArr:", jsonByteArr)
	// 使用3:反序列化之字符串轉(zhuǎn)結(jié)構(gòu)體
	str := `{"id":666, "order_id":"12345678", "money": 99.99, "create_time":"2023-12-05T16:19:33.943989108+08:00", "extend":{"name":"張三"}}`
	var order2 Order
	err := jsoniter.UnmarshalFromString(str, &order2)
	if err != nil {
		fmt.Println("err2:", err)
	}
	fmt.Println("order2:", order2)
	// 使用4:反序列化之字節(jié)數(shù)組轉(zhuǎn)結(jié)構(gòu)體
	var order3 Order
	var jsonNew = jsoniter.ConfigCompatibleWithStandardLibrary
	// 自適應(yīng)類型
	extra.RegisterFuzzyDecoders()
	err = jsonNew.Unmarshal([]byte(str), &order3)
	if err != nil {
		fmt.Println("err3:", err)
	}
	fmt.Println("order3:", order3)
}

輸出結(jié)果:

jsonStr: {"id":666,"order_id":"12345678","money":99.99,"create_time":"2023-12-05T16:20:40.595914198+08:00","extend":{"name":"張三"}}
jsonByteArr: [123 34 105 100 34 58 54 54 54 44 34 111 114 100 101 114 95 105 100 34 58 34 49 50 51 52 53 54 55 56 34 44 34 109 111 110 101 121 34 58 57 57 46 57 57 44 34 99 114 101 97 116 101 95 116 105 109 101 34 58 34 50 48 50 51 45 49 50 45 48 53 84 49 54 58 50 48 58 52 48 46 53 57 53 57 49 52 49 57 56 43 48 56 58 48 48 34 44 34 101 120 116 101 110 100 34 58 123 34 110 97 109 101 34 58 34 229 188 160 228 184 137 34 125 125]
order2: {666 12345678 99.99 2023-12-05 16:19:33.943989108 +0800 CST map[name:張三]}
order3: {666 12345678 99.99 2023-12-05 16:19:33.943989108 +0800 CST map[name:張三]}

區(qū)別2: jsoniter能夠處理類型不匹配情況

package main
import (
	"encoding/json"
	"fmt"
	"time"
	jsoniter "github.com/json-iterator/go"
	"github.com/json-iterator/go/extra"
)
type Order struct {
	Id         int64             `json:"id"`
	OrderId    string            `json:"order_id"`
	Money      float64           `json:"money"`
	CreateTime time.Time         `json:"create_time"`
	Extend     map[string]string `json:"extend"`
}
func main() {
	str := `{"id":666, "order_id":"12345678", "money": "99.99", "create_time":"2023-12-05T16:19:33.943989108+08:00", "extend":{"name":"張三"}}`
	var order Order
	err := json.Unmarshal([]byte(str), &order)
	if err != nil {
		fmt.Println("json的err:", err)
	}
	fmt.Println("json的解析結(jié)果order:", order)
	var order2 Order
	var jsonNew = jsoniter.ConfigCompatibleWithStandardLibrary
	// 自適應(yīng)類型
	extra.RegisterFuzzyDecoders()
	err = jsonNew.Unmarshal([]byte(str), &order2)
	if err != nil {
		fmt.Println("jsoniter的err2:", err)
	}
	fmt.Println("jsoniter的解析結(jié)果order2:", order2)
}

輸出結(jié)果:

json的err: json: cannot unmarshal string into Go struct field Order.money of type float64
json的解析結(jié)果order: {666 12345678 0 2023-12-05 16:19:33.943989108 +0800 CST map[name:張三]}
jsoniter的解析結(jié)果order2: {666 12345678 99.99 2023-12-05 16:19:33.943989108 +0800 CST map[name:張三]}

到此這篇關(guān)于Golang中json和jsoniter的區(qū)別的文章就介紹到這了,更多相關(guān)Golang json和jsoniter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang程序使用alpine編譯出最小arm鏡像實(shí)現(xiàn)

    golang程序使用alpine編譯出最小arm鏡像實(shí)現(xiàn)

    這篇文章主要為大家介紹了golang程序使用alpine編譯出最小arm鏡像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言make創(chuàng)建切片的五種方式

    Go語言make創(chuàng)建切片的五種方式

    本文主要介紹了Go語言make創(chuàng)建切片的五種方式,包括指定長度、預(yù)分配容量、零長度空切片、帶容量緩沖區(qū)、匿名結(jié)構(gòu)體切片,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-09-09
  • Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn)

    Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn)

    本文主要介紹了Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Golang實(shí)現(xiàn)Directional Channel(定向通道)

    Golang實(shí)現(xiàn)Directional Channel(定向通道)

    這篇文章主要介紹了Golang實(shí)現(xiàn)Directional Channel(定向通道),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Go語言判斷指定文件是否存在的方法

    Go語言判斷指定文件是否存在的方法

    這篇文章主要介紹了Go語言判斷指定文件是否存在的方法,實(shí)例分析了Go語言針對文件操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • go gin+token(JWT)驗(yàn)證實(shí)現(xiàn)登陸驗(yàn)證

    go gin+token(JWT)驗(yàn)證實(shí)現(xiàn)登陸驗(yàn)證

    本文主要介紹了go gin+token(JWT)驗(yàn)證實(shí)現(xiàn)登陸驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Go語言單線程運(yùn)行也會(huì)有的并發(fā)問題解析

    Go語言單線程運(yùn)行也會(huì)有的并發(fā)問題解析

    這篇文章主要為大家介紹了Go語言單線程運(yùn)行的并發(fā)問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言中接口組合的實(shí)現(xiàn)方法

    Go語言中接口組合的實(shí)現(xiàn)方法

    這篇文章主要介紹了Go語言中接口組合的實(shí)現(xiàn)方法,實(shí)例分析了接口中包含接口的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • go實(shí)現(xiàn)圖片拼接與文字書寫的方法實(shí)例

    go實(shí)現(xiàn)圖片拼接與文字書寫的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于go實(shí)現(xiàn)圖片拼接與文字書寫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Golang日志庫logrus的介紹與使用示例代碼

    Golang日志庫logrus的介紹與使用示例代碼

    Logrus是Go語言的一個(gè)功能豐富的日志庫,支持結(jié)構(gòu)化日志和多級別日志記錄,它兼容標(biāo)準(zhǔn)log庫,并可通過自定義Hooks和Formatter進(jìn)行高度定制化,支持集成如syslog等系統(tǒng),便于管理和分析,Logrus還支持自定義日志顏色和格式,以及根據(jù)日志級別進(jìn)行不同處理,如panic和exit
    2024-10-10

最新評論

清水县| 贺兰县| 遂溪县| 焉耆| 阿城市| 塔城市| 阳江市| 眉山市| 孟州市| 舞钢市| 沧州市| 荃湾区| 博客| 宝坻区| 桃江县| 彭阳县| 康平县| 连州市| 芒康县| 新安县| 自治县| 淳安县| 汉源县| 公主岭市| 西昌市| 台安县| 沁阳市| 德化县| 柘城县| 洪泽县| 吴江市| 清徐县| 景泰县| 涞源县| 剑川县| 二手房| 兴仁县| 盈江县| 武平县| 长泰县| 临潭县|