Go语言处理JSON数据,有哪些高效实用的方法与技巧?
- 前端开发
- 2026-01-15
- 5
Go语言中处理JSON数据的方法
在Go语言中,处理JSON数据通常涉及以下几个步骤:解析JSON字符串、创建结构体以映射JSON数据、编码结构体为JSON字符串以及解码JSON字符串为结构体,以下是对这些步骤的详细说明。

解析JSON字符串
需要使用encoding/json包中的json.Unmarshal函数来解析JSON字符串,这个函数接受两个参数:一个JSON字符串和一个指向结构体的指针,结构体的字段名应与JSON对象的键匹配,或者使用json:"key"标签指定字段名。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address"` } func main() { jsonStr := `{"name":"John Doe","age":30,"address":"123 Elm St"}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println("Error parsing JSON:", err) return } fmt.Printf("Parsed Person: %+vn", person) }
创建结构体以映射JSON数据
结构体是用来映射JSON数据的,每个字段都可以有一个标签,用于指定JSON键名,如果结构体字段的名称与JSON键名不同,可以使用json:"key"标签来指定。
| 字段名 | JSON键名 | 类型 |
|---|---|---|
| Name | name | string |
| Age | age | int |
| Address | address | string |
编码结构体为JSON字符串
编码结构体为JSON字符串可以使用json.Marshal函数,这个函数接受一个结构体作为参数,并返回一个JSON格式的字节切片。

func main() { person := Person{Name: "John Doe", Age: 30, Address: "123 Elm St"} jsonBytes, err := json.Marshal(person) if err != nil { fmt.Println("Error marshaling JSON:", err) return } fmt.Println("Marshalled JSON:", string(jsonBytes)) }
解码JSON字符串为结构体
解码JSON字符串为结构体的过程与解析JSON字符串类似,使用json.Unmarshal函数。
func main() { jsonStr := `{"name":"Jane Doe","age":25,"address":"456 Oak St"}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println("Error parsing JSON:", err) return } fmt.Printf("Parsed Person: %+vn", person) }
FAQs
Q1:如何处理嵌套的JSON数据?

A1:对于嵌套的JSON数据,可以创建嵌套的结构体来映射这些数据。encoding/json包同样支持嵌套结构体。
Q2:如何处理未知数量的JSON键?
A2:可以使用map[string]interface{}来处理未知数量的JSON键,这种类型可以存储任意类型的键和值。
国内文献权威来源
- 《Go语言圣经》 《The Go Programming Language》的中文版,由人民邮电出版社出版。
- 《Go语言实战》 由电子工业出版社出版,适合初学者和进阶者阅读。