[golang]struct 轉換為 json 字串

 在 Golang 中,可以使用 encoding/json 套件將 struct 轉換為 JSON 字串。


基本做法

package main
import ( "encoding/json" "fmt" ) type Employee struct { EmpID string `json:"EmpID"` EmpNo string `json:"EmpNo"` EmpName string `json:"EmpName"` Email string `json:"Email"` } func main() { emp := Employee{ EmpID: "12345", EmpNo: "E1001", EmpName: "王小明", Email: "test@example.com", } // 將 struct 轉換為 JSON jsonData, err := json.Marshal(emp) if err != nil { fmt.Println("轉換 JSON 失敗:", err) return } // 轉換為 JSON 字串並輸出 jsonStr := string(jsonData) fmt.Println(jsonStr) }

輸出

{"EmpID":"12345","EmpNo":"E1001","EmpName":"王小明","Email":"test@example.com"}


格式化輸出(縮進美化)

如果想要讓 JSON 字串更易讀,可以使用 json.MarshalIndent

jsonData, err := json.MarshalIndent(emp, "", " ")
fmt.Println(string(jsonData))

輸出

{
"EmpID": "12345",
"EmpNo": "E1001",
"EmpName": "王小明",
"Email": "test@example.com"
}



Struct 陣列轉 JSON

如果要轉換 多筆資料[]struct),一樣使用 json.Marshal

emps := []Employee{
{"12345", "E1001", "王小明", "test@example.com"},
{"67890", "E1002", "李大華", "test2@example.com"},
} jsonData, _ := json.MarshalIndent(emps,
jsonData, _ := json.MarshalIndent(emps, "", " ")
fmt.Println(string(jsonData))

輸出

[
{
"EmpID": "12345",
"EmpNo": "E1001",
"EmpName": "王小明",
"Email": "test@example.com"
},
{
"EmpID": "67890",
"EmpNo": "E1002",
"EmpName": "李大華",
"Email": "test2@example.com"
}
]



總結

  1. json.Marshal(struct):轉換為 JSON 壓縮格式
  2. json.MarshalIndent(struct, "", " "):轉換為 JSON 格式化輸出
  3. 適用單一 Struct 或 Struct 陣列
  4. 標籤 (json:"EmpID") 控制 JSON 欄位名稱


留言

這個網誌中的熱門文章

[Kotlin]如何學習Kotlin

[golang]如何使用 gorm 高效執行批量插入 (可以透過 Create()、CreateInBatches(),或者 原生 SQL 語句 來提升效率)

[Kotlin]Kotlin Multiplatform (KMP) 如何安裝使用和部署