網頁

2022/12/6

Golang interface{} 轉 map[string]interface{}

Go轉interface{}變數為map[string]interface{}的方式如下。


範例環境:

  • Go 1.19


範例

先把interface{}json.Marshal轉成json encoded bytes再用json.Unmarshal轉成map[string]interface{},不過這僅適用interface實為struct的時候。

main.go

package main

import (
    "encoding/json"
    "fmt"
)

type Interface interface{}
type Map map[string]interface{}

type Employee struct {
    ID   int64
    Name string
}

func main() {
    var i Interface = Employee{
        ID:   1,
        Name: "John",
    }
    bytes, _ := json.Marshal(i) // convert interface{} to json encoded bytes
    fmt.Println(string(bytes))  // {"ID":1,"Name":"John"}

    var m Map
    json.Unmarshal(bytes, &m) // convert json encoded bytes to map[string]interface{}
    fmt.Println(m)            // map[ID:1 Name:John]

    for k, v := range m {
        fmt.Printf("k=%s, v=%v\n", k, v)
    }
}

執行印出以下。

{"ID":1,"Name":"John"}
map[ID:1 Name:John]
k=Name, v=John
k=ID, v=1

沒有留言:

張貼留言