AdSense

網頁

2024/3/3

Golang map與struct轉換

Go map與struct轉換的方法如下。


利用JSON marshal、unmarshal來進行map與struct的轉換。


map 轉 struct

main.go

package main

import (
    "encoding/json"
    "fmt"
)

type Employee struct {
    Id   int64
    Name string
    Age  int
}

func main() {
    m := map[string]any{
        "id":   1,
        "name": "john",
        "age":  33,
    }

    b, err := json.Marshal(m)
    if err != nil {
        panic(err)
    }
    emp := Employee{}
    err = json.Unmarshal(b, &emp)
    if err != nil {
        panic(err)
    }

    fmt.Println(emp) // {1 john 33}
}

執行印出以下:

{1 john 33}


struct 轉 map

main.go

package main

import (
    "encoding/json"
    "fmt"
)

type Employee struct {
    Id   int64
    Name string
    Age  int
}

func main() {
    emp := Employee{
        Id:   1,
        Name: "john",
        Age:  33,
    }

    b, err := json.Marshal(emp)
    if err != nil {
        panic(err)
    }

    m := make(map[string]any, 0)
    err = json.Unmarshal(b, &m)
    if err != nil {
        panic(err)
    }

    fmt.Println(m) // map[Age:33 Id:1 Name:john]
}

執行印出以下:

map[Age:33 Id:1 Name:john]


沒有留言:

AdSense