多结构切换?

假设我有一个应用程序接收两种不同格式的 json 数据。


f1 = `{"pointtype":"type1", "data":{"col1":"val1", "col2":"val2"}}`

f2 = `{"pointtype":"type2", "data":{"col3":"val3", "col3":"val3"}}`

我有一个与每种类型相关的结构:


type F1 struct {

  col1 string

  col2 string

}


type F2 struct {

  col3 string

  col4 string

}

假设我使用encoding/json库将原始 json 数据转换为结构体: type Point { pointtype string data json.RawMessage }


如何仅通过知道点类型将数据解码为适当的结构?


我正在尝试以下方面的内容:


func getType(pointType string) interface{} {

    switch pointType {

    case "f1":

        var p F1

        return &p

    case "f2":

        var p F2

        return &p

    }

    return nil

}

这是行不通的,因为返回的值是一个接口,而不是正确的结构类型。我怎样才能使这种开关结构选择工作?


心有法竹
浏览 207回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go