私はjsonの型を判断したいと思っていますが、常に "型マップ[文字列]インタフェース{}についてはわかりません!"というメッセージが返されます。golangでunmarshal json interface {}型を判断するにはどうすればよいですか?
============================================== ===========================
type getRemoteCardInfo struct {
Code int
Msg string
Data []*remoteCardInfo
}
type remoteCardInfo struct {
Sn string
RemoteCardIp string
RemoteCardMac string
}
func Get_json_data(url string) (interface{}, error) {
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
req.Header.Add("X-MYCMDB-Auth-Token", "sPf98SMBWzOZJEJB8KWltbJyKvFYPauu")
if err != nil {
return nil, err
}
resp, _ := client.Do(req)
if resp.StatusCode != http.StatusOK {
resp.Body.Close()
return nil, fmt.Errorf("query failed: %s", resp.Status)
}
var result interface{}
body, err := ioutil.ReadAll(resp.Body)
if err := json.Unmarshal(body, &result); err != nil {
log.Fatalf("JSON unmarshaling failed: %s", err)
}
resp.Body.Close()
fmt.Println(result)
return result, nil
}
func main() {
jsondata, err := Get_json_data(DHCPURL)
if err != nil {
log.Fatal(err)
}
switch v := jsondata.(type) {
case getRemoteCardInfo:
fmt.Println("aaaa")
default:
fmt.Printf("I don't know about type %T!\n", v)
}
行くのツアーを見ると、それはあなたが望むものではない場合は、空のインターフェイスにマーシャリング解除を停止します。 – Volker
問題を理解するために必要な部分にのみコードを整理してください。また、適切に書式設定すると、読めるようになります。 – Flimzy
私は裁判官を意味するかどうか、おそらくあなたが主張を探しているのか分からない、この場合(タイプ)はあなたが主張の対象とするタイプです。こちらをご覧くださいhttps://tour.golang.org/methods/15 –