我有一个返回接口{}的函数。如何在不对结构中的字段进行“硬编码”的情况下将其序列化为JSON数组。 我正在使用https://github.com/jmoiron/jsonq来返回界面。
json.Unmarshal(resp.Bytes(), &response)
data := map[string]interface{}{}
dec := json.NewDecoder(strings.NewReader(resp.String()))
dec.Decode(&data)
jq := jsonq.NewQuery(data)
results, err := jq.Array("results")
if err != nil {
log.Fatalln("Unable to get results: ", err)
}
if len(results) == 0 {
return nil
}
return results // this is returning an interface{}
答案 0 :(得分:2)
json字符串始终可以解组为map[string]interface{}
。那就是你需要使用的东西。
答案 1 :(得分:0)
我应该检查我正在处理的类型。我发现了:
fmt.Println(reflect.TypeOf(results))
返回: [] interface {}
然后我可以使用:
迭代它for _, event:= range results {
v, err := json.MarshalIndent(event, "", " ")
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(string(v))
}