Golang json用法詳解(一)

2022-09-02 01:21:10 字數 1667 閱讀 4773

json格式可以算我們日常最常用的序列化格式之一了,go語言作為乙個由google開發,號稱網際網路的c語言的語言,自然也對json格式支援很好。但是go語言是個強型別語言,對格式要求極其嚴格而json格式雖然也有型別,但是並不穩定,go語言在解析**為非強型別語言時比如php等序列化的json時,經常遇到一些問題諸如字段型別變化導致無法正常解析的情況,導致服務不穩定。所以本篇的主要目的

就是挖掘golang解析json的絕大部分能力

比較優雅的解決解析json時存在的各種問題

深入一下golang解析json的過程

乙個結構體正常序列化過後是什麼樣的呢?

package main

import (

"encoding/json"

"fmt"

)// product 商品資訊

type product struct

func main()

p.name = "xiao mi 6"

p.isonsale = true

p.number = 10000

p.price = 2499.00

p.productid = 1

data, _ := json.marshal(p)

fmt.println(string(data))

}//結果

何為tag,tag就是標籤,給結構體的每個欄位打上乙個標籤,標籤冒號前是型別,後面是標籤名。

// product _

type product struct

// 序列化過後,可以看見

omitempty,tag裡面加上omitempy,可以在序列化的時候忽略0值或者空值

package main

import (

"encoding/json"

"fmt"

)// product _

type product struct

func main()

p.name = "xiao mi 6"

p.isonsale = false

p.number = 10000

p.price = 2499.00

p.productid = 0

data, _ := json.marshal(p)

fmt.println(string(data))

}// 結果

type,有些時候,我們在序列化或者反序列化的時候,可能結構體型別和需要的型別不一致,這個時候可以指定,支援string,number和boolean

package main

import (

"encoding/json"

"fmt"

)// product _

type product struct

func main() `

p := &product{}

err := json.unmarshal(byte(data), p)

fmt.println(err)

fmt.println(*p)

}// 結果

Golang json用法詳解(一)

json格式可以算我們日常最常用的序列化格式之一了,go語言作為乙個由google開發,號稱網際網路的c語言的語言,自然也對json格式支援很好。但是go語言是個強型別語言,對格式要求極其嚴格而json格式雖然也有型別,但是並不穩定,go語言在解析 為非強型別語言時比如php等序列化的json時,經...

Golang json用法詳解(一)

json格式可以算我們日常最常用的序列化格式之一了,go語言作為乙個由google開發,號稱網際網路的c語言的語言,自然也對json格式支援很好。但是go語言是個強型別語言,對格式要求極其嚴格而json格式雖然也有型別,但是並不穩定,go語言在解析 為非強型別語言時比如php等序列化的json時,經...

Golang json用法詳解

簡介 json格式可以算我們日常最常用的序列化格式之一了,go語言作為乙個由google開發,號稱網際網路的c語言的語言,自然也對json格式支援很好。但是go語言是個強型別語言,對格式要求極其嚴格而json格式雖然也有型別,但是並不穩定,go語言在解析 為非強型別語言時比如php等序列化的json...