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
沒有留言:
張貼留言