【发布时间】:2014-10-23 03:07:42
【问题描述】:
假设我有一个应用程序接收两种不同格式的 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 数据转换为结构:
类型点{
点类型字符串
数据 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
}
这不起作用,因为返回的值是一个接口,而不是正确的结构类型。 我怎样才能使这种开关结构选择工作?
【问题讨论】:
-
另一种方法是使用地图(本机 json 包支持)。
-
Sebastien 我不确定我是否理解。你有什么我可以检查的例子吗?