package main
import (
"fmt"
"strings"
"encoding/json"
)
type PrivilegeExtraInfo struct {
PayerType int64 `json:"payerType"`
ProductType int64 `json:"ProductType"`
BizData map[string]string `json:"BizData"`
}
func main () {
var extraStr = "{\"payerType\": 3, \"BizData\": {\"bizKey\": \"bizValue22\"}}"
var extraInfo map[string]interface{}
decoder := json.NewDecoder(strings.NewReader(extraStr))
decoder.UseNumber()
if err := decoder.Decode(&extraInfo); err != nil {
fmt.Println("解析失败")
return
}
payerType, err := extraInfo["payerType"].(json.Number).Int64()
if err != nil {
fmt.Printf("payerType断言为int64失败, err:%v\n", err)
return
}
if payerType == int64(3) {
fmt.Printf("类型正确,投保方: %v\n", payerType)
} else {
fmt.Printf("类型不对,投保方: %v\n", payerType)
}
bizData, ok := extraInfo["BizData"].(map[string]interface{})
if !ok {
fmt.Printf("BizData断言失败,err: %v\n", err)
return
}
fmt.Printf("BizData 内容是:%v\n", bizData)
if bizValue, ok := bizData["bizKey"]; ok {
if realValue, ok := bizValue.(string); ok {
fmt.Printf("BizValue 内容是:%v\n", realValue)
}
}
}