一种选择是将顶级事物解组为
json.RawMessage最初的一部分。
然后遍历成员,并查看每个成员的第一个字符。如果它是一个对象,则将其解组到您的
InfoMap标头结构中;如果它是一个数组,则将其解组到该
Code结构的一个切片中。
或者,如果可以预测的话,只需将第一个成员解组为一个结构,将第二个成员解构为切片。
我在操场上举了这种方法的例子。
type Response struct { ID int `json:"id"` RawResult []json.RawMessage `json:"result"` Header *Header`json:"-"` Values []*Value `json:"-"`}type Header struct { Bundled bool `json:"bundled"` Type string `json:"type"`}type Value struct { Name string `json:"name"` Value string `json:"value"`}func main() { //error checks ommitted resp := &Response{} json.Unmarshal(rawJ, resp) resp.Header = &Header{} json.Unmarshal(resp.RawResult[0], resp.Header) resp.Values = []*Value{} json.Unmarshal(resp.RawResult[1], &resp.Values)}


