您的位置:首页 > 编程语言 > Go语言

go语言反射reflect

2016-07-28 10:06 573 查看
//UnKonwnJSONUnmarshal json
func UnKonwnJSONUnmarshal(data []byte, key string) (vv interface{}) {
var f interface{}
if err := json.Unmarshal(data, &f); err == nil {
m := f.(map[string]interface{})
for k, v := range m {
if key == k {
switch vv := v.(type) {
case string:
fmt.Println(k, "is string", vv)
return vv
case int:
fmt.Println(k, "is int", vv)
case []interface{}:
fmt.Println(k, "is arry", vv)
return vv
case float64:
fmt.Println(k, "is float64", vv)
return vv
default:
fmt.Println(k, "is of a type I don't know how to handle")
}
} else {
continue
}
}
}
return
}


// MissionPerformance method
func (uptokenTask MissionTaskStr) MissionPerformance() (rejson bool) {
uptokenTask.Name = "missionPerformance"
uptoken := createToken()
s := strings.Split(uptoken, ":")
fmt.Println("policy-base64---", s[2])
policy, err := base64.StdEncoding.DecodeString(s[2])
expire := UnKonwnJSONUnmarshal(policy, "deadline")
switch value := expire.(type) {
case float64:
deadline := int64(value)
now := time.Now().Unix()
if now < deadline {
fmt.Println("==", now)
rejson = true
}
fmt.Println("!=", deadline, now)

}
fmt.Println("policy", expire)
if err != nil {
fmt.Println(uptokenTask.Name, "error---", err)
}
return

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: