jstr := `{"key": "userKeyValue", "value": "userValueValue"}`
// declare a map that has a key string and value interface{} so that any values or
// types will be accepted;
jmap := make(map[string]interface{})
err := json.Unmarshal(jstr, &jmap)
if err != nil {
log.Fatal(err)
}
for k, v := range jmap {
fmt.Printf("Key: %v, Value: %v\n", k, v)
// If you want to directly work with v remember it is an interface{}
// Thus to use it as a string you must v.(string)
}
// Will output the following:
// Key: key, Value: userKeyValue
// Key: value, Value: userValueValue
2条答案
按热度按时间kuhbmx9i1#
您可以使用json unmarshaler接口,但是根据您从mysql检索数据的方式,您的实现会有所不同。但想法是一样的。对于这个例子,我使用https://github.com/go-sql-driver/mysql 假设您想将数据存储在实际的json字段(mysql>=5.7)中,您可以这样做:
jv2fixgn2#
一种快速的方法,不一定是最优雅的方法,是使用golang的默认json解组器行为来处理golangMap:
您现在可以使用标准的golangMap来操作或管理接收到的数据。。。更优雅的方法是为声明的类型实现json封送处理程序和反封送处理程序接口。这些在golang文件中有描述:https://golang.org/pkg/encoding/json/