在這裏的多晶型JSON解組是一個例子(也參見https://play.golang.org/p/or7z4Xc8tN):嵌入式結構
package main
import (
"encoding/json"
"fmt"
)
type A struct {
X string
Y int
}
type B struct {
A
Y string
}
func main() {
data := []byte(`{"X": "me", "Y": "hi"}`)
b := &B{}
json.Unmarshal(data, b)
fmt.Println(b)
fmt.Println(b.A)
b = &B{}
data = []byte(`{"X": "me", "Y": 123}`)
json.Unmarshal(data, b)
fmt.Println(b)
fmt.Println(b.A)
}
,其輸出:
&{{me 0} hi}
{me 0}
&{{me 0} }
{me 0}
有一種方法,以多態解組的字段,Y的任一個int或一個字符串?甚至自B.Y被定義以來,甚至可以解組爲A.Y.
我知道有些人可能會建議用類似於json.Unmarshall(data, &b.A)
的方式解組,但我不知道我是否可以將它應用到我當前的設計中。
也許幫助https://stackoverflow.com/questions/32428797/unmarshal-to-a-interface-type –