我们有一些结构,我们希望有一个通用的ToMap
方法将结构转换为Map。通过封送和解组到json来实现。但这似乎不起作用。
是因为Mappable
结构收到ToMap()
并且它没有任何成员属性吗?
如果是这样,有什么办法可以使ToMap()
结构而不是Params
结构上的Mappable
收到。
我将代码保留在下面,但也可以在https://play.golang.org/p/aDsYxddImxb进行编辑
package main
import (
"fmt"
"encoding/json"
)
type Mappable struct {}
func (m *Mappable) ToMap() (reqInterface map[string]interface{}) {
resJson, err := json.Marshal(m)
fmt.Println("**** err ****", err)
json.Unmarshal(resJson, &reqInterface)
return
}
type Params struct {
Mappable
A string `json:"a"`
B string `json:"b"`
C string `json:"c"`
D string `json:"d"`
}
func main() {
params := Params{
A: "dummy",
B: "dummy",
C: "dummy",
D: "dummy",
}
fmt.Printf("struct to convert: %#v \n", params)
fmt.Println("Converted with common ToMap method: ", params.ToMap())
}