Marshal / unMarshal reflect.Type

时间:2017-05-03 21:58:58

标签: go

我创建了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{}
}

1 个答案:

答案 0 :(得分:2)

简短回答:不,这是不可能的。

答案稍长:由TypeOf返回的relfect.Type未导出的类型{{3}实现的界面类型 },没有导出其字段且其方法集不包含MarshalJSON/UnmarshalJSON方法,您不能按原样编组或解组reflect.Type值。