Saya membongkar respons JSON menjadi sebuah struct. Untuk salah satu bidang, ia mengembalikan int dan string saat kosong.

type example struct {    
  Position int `json:"position"`
}

json: cannot unmarshal string into Go struct field .position of type int

Tanggapannya juga

{"position":8} or {"position":"none"}

Bagaimana saya bisa menangani respons int dan string?

go
0
1mmerse 22 November 2017, 16:04

1 menjawab

Jawaban Terbaik

Ubah jenisnya menjadi interface{}, lalu Anda dapat memeriksa jenisnya saat runtime.

type example struct {    
    Position interface{} `json:"position"`
}
/*
Returns an int and a bool, indicating if a position exists.
*/
func (e * example) getValue() (int,bool){
    if v,ok := Position.(int) {
      return v,true
    } else {
     return 0,false
    }
}
0
Hein Oldewage 23 November 2017, 13:39