JSON数组编组

时间:2017-10-29 14:45:03

标签: json go

我有一个返回接口{}的函数。如何在不对结构中的字段进行“硬编码”的情况下将其序列化为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{}

2 个答案:

答案 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))
    }