在golang中,操作json數(shù)據(jù)是一件很常見的事情。在某些情況下,需要給json數(shù)據(jù)添加一些字段,本文將介紹如何實(shí)現(xiàn)json添加字段的方法。
// 定義一個(gè)結(jié)構(gòu)體
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 初始化一個(gè)Person結(jié)構(gòu)體
p := Person{"zhangsan", 20}
// 將結(jié)構(gòu)體轉(zhuǎn)換為json格式
b, _ := json.Marshal(p)
// 將json數(shù)據(jù)解析成map類型
var m map[string]interface{}
json.Unmarshal(b, &m)
// 給map中添加一個(gè)字段
m["address"] = "beijing"
// 將map類型轉(zhuǎn)換為json格式
newB, _ := json.Marshal(m)
// 輸出結(jié)果
fmt.Println(string(newB)) // {"address":"beijing","age":20,"name":"zhangsan"}
}
首先,需要定義一個(gè)結(jié)構(gòu)體,用來存放需要轉(zhuǎn)換為json格式的數(shù)據(jù)。這里我們使用了一個(gè)Person結(jié)構(gòu)體作為例子。
接著,需要初始化一個(gè)Person結(jié)構(gòu)體,并將其轉(zhuǎn)換為json格式的字節(jié)數(shù)組。
然后,使用json.Unmarshal()函數(shù)將字節(jié)數(shù)組解析成一個(gè)map類型,這樣就可以在不改變?cè)冀Y(jié)構(gòu)體的情況下,給json數(shù)據(jù)添加字段了。
最后,將修改后的map類型再次轉(zhuǎn)換為json格式的字節(jié)數(shù)組即可。
添加字段的方法很簡單,但要注意的是,一定要先將json數(shù)據(jù)解析成map類型,才能進(jìn)行修改,否則可能會(huì)修改數(shù)據(jù)的類型。