当从端点解组数据时,我几乎总是有一个结构,其中包含我希望从我的请求中获取的数据,我将其解组。好吧,有时我想看到所有返回给我的东西,但我不确定那些数据是什么,所以我不知道如何在我的结构中定义它。有没有办法让一个结构只能抓取所有数据被解组,而不必指定它?
这是我认为可行的,但事实并非如此
resp, err := httpClient.Get("/api/stuff")
data, _ := ioutil.ReadAll(resp.Body)
var myStruct struct{}
json.Unmarshal(data, myStruct)
答案 0 :(得分:3)
如果您事先不知道JSON对象的组成,you can unmarshal into a map[string]interface{}
.
var myMap map[string]interface{}
json.Unmarshal(data, &myMap)
查看示例here.
答案 1 :(得分:1)
如果你不知道如何定义你的结构,那么也许你应该use a map.它非常适合解组JSON。以下是如何在不确切知道您接收的数据的情况下执行此操作的示例:
func parseJSON(r *http.Request) (map[string]interface{}, error) {
var postData interface{}
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&postData)
if err != nil {
return nil, err
}
return postData.(map[string]interface{}), nil
}
现在你至少有一个每个数据的字符串名称,这应该让你的应用程序知道如何处理它。