现状如下:
>我现在有很多API,每个API的数据都不一样,每个接口我所需要的数据也不一样,所以我针对每一个接口,都写了不同的结构体。现在我获得响应,需要根据不同的API初始化不同的结构体,再把获取的json数据反序列化到这个结构体
问题如下:
>由于存在很多API,也就是说很多不同结构体,我在`json.Unmarshal()`的时候,必须传`interface`,但是使用`Unmarshal()`函数的时候,如果传参是`interface`,那么一定会反序列化成`map`格式,这样导致我使用结构体过滤的数据无效。
例子:
```go
type API struct {
MyTarget string `json:"target"`
}
type API2 struct {
MyTarget2 string `json:"target2"`
}
type API3 struct {
MyTarget3 string `json:"target3"`
}
var APISlice = map[string]interface{}{
"api":API{},
"api2":API2{},
"api3":API3{},
}
func main() {
data = []byte{}
str := "api1" //假设是api1,实际业务我是遍历每一个api的
myStruct := APISlice[str]
json.Unmarshal(data,&myStruct) //此时得到的结果,是一个map,并且响应的结果(即data)全部装进这个map里面了
//而我想要的是我已经用结构体定义好的字段,target就是我想要得
}
```
有疑问加站长微信联系(非本文作者))