我有一个父结构和两个子结构ResponseA和ResponseB。我为ParentA结构编写了“UnmarshalJson”函数。但是,parentB结构和字符串字段无法解析。我该如何编写自定义的Unmarshal函数,仅解析指定的结构?
type ResponseA struct {
PageA int `json:"pageA"`
EntriesA []string `json:"entriesA"`
}
type ResponseB struct {
PageB int `json:"pageB"`
EntriesB []string `json:"entriesB"`
}
type ResponseParent struct {
ResponseA
ResponseB
PageC int `json:"pageC"`
}
func (r *ResponseA) UnmarshalJSON(data []byte) error {
// UnMarshal ResponseA structure
}
func main() {
jsonStr := `{"pageA": 1, "entriesA": ["classA"], "pageB": 2, "entriesB":
["classC","classD"], "pageC":3}`
// str := `{"page": 1, "entries": ["classA", "classB"]}`
var res *ResponseParent
json.Unmarshal([]byte(jsonStr), &res)
entriesA := res.EntriesA
pageA := res.PageA
entriesB := res.EntriesB
pageB := res.PageB
pageC := res.PageC
fmt.Println("========Response A==========a")
fmt.Println("PageA: %v", pageA)
fmt.Println("EntriesA: %v", entriesA)
fmt.Println("========Response B==========a")
fmt.Println("PageB: %v", pageB)
fmt.Println("EntriesB: %v", entriesB)
fmt.Println("PageC: %v", pageC)
}
OutPut:
========Response A==========a
PageA: %v 1
EntriesA: %v [classA]
========Response B==========a
PageB: %v 0
EntriesB: %v []
PageC: %v 0