跨结构的通用`ToMap`方法

时间:2019-09-30 07:12:21

标签: go

我们有一些结构,我们希望有一个通用的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())
}

0 个答案:

没有答案