mapstructure传送门
package main
import (
"encoding/json"
"fmt"
"github/mitchellh/mapstructure"
)
type Demo struct {
ID int `json:"id"`
Name string `json:"name"`
}
func main() {
var value = make(map[string]Demo)
value["1"] = Demo{
ID: 1,
Name: "name-1",
}
valueData, err := json.Marshal(value)
if err != nil {
panic(err)
}
var newValue interface{}
if err = json.Unmarshal(valueData, &newValue); err != nil {
panic(err)
}
// 反序列化之后只能强转为map[string]interface{}
for _, v := range newValue.(map[string]interface{}) {
/*
此时可以使用mapstructure.Decode方法编码,该方法使用的是反射的机制;
也可以对v进行序列化,然后反序列化给demo变量;
*/
var demo Demo
if err = mapstructure.Decode(v, &demo); err != nil {
panic(err)
}
fmt.Println(demo)
}
}
更多推荐
Golang库解析之mapstructure
发布评论