我创建了map [string] interface {},我希望在2个重置服务之间通过地图传递多种类型。
每次我编组时,我都会在字段中找到应包含reflect.Type的空地图。
ServiceType:map[]
甚至可能吗?
测试代码:( KeyValuePair将代表地图的单个值),MessageService可以替换为任何类型的课程
data := GenericHandlers.KeyValuePair{Key:"ServiceType",Value:reflect.TypeOf(MessageService.MessageService{})}
Json , _ := json.Marshal(data)
resKvp := GenericHandlers.KeyValuePair{}
err := json.Unmarshal(Json,&resKvp)
if(err != nil){
log.Println(err.Error())
}
fmt.Println(resKvp)
type KeyValuePair struct{
Key string
Value interface{}
}
答案 0 :(得分:2)
简短回答:不,这是不可能的。
答案稍长:由TypeOf
返回的relfect.Type是未导出的类型{{3}实现的界面类型 },没有导出其字段且其方法集不包含MarshalJSON/UnmarshalJSON
方法,您不能按原样编组或解组reflect.Type
值。