2017-05-03 73 views
0

我創建了map [string] interface {},我想通過2個重置服務之間的地圖傳遞多種類型。元帥/ unmarshal reflect.Type

每次我元帥我得到應該包含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

簡短的回答來代替:不,這是不可能的。

稍長的答案:由於relfect.Type,通過TypeOf返回的,是由未導出rtype實現的接口類型,沒有它的字段被導出,其方法集不包含MarshalJSON/UnmarshalJSON方法,你不能按原樣編組或解組編號reflect.Type值。