相关疑难解决方法(0)

Go - 解码JSON,因为它仍然通过net/http流式传输

在过去,我使用go以如下所示的方式从API端点解码JSON.

client := &http.Client{}

req, err := http.NewRequest("GET", "https://some/api/endpoint", nil)
res, err := client.Do(req)
defer res.Body.Close()

buf, _ := ioutil.ReadAll(res.Body)

// ... Do some error checking etc ...

err = json.Unmarshal(buf, &response)
Run Code Online (Sandbox Code Playgroud)

我很快就要开发一个端点,它可以按以下格式向我发送几兆字节的JSON数据.

{
    "somefield": "value",
    "items": [
        { LARGE OBJECT },
        { LARGE OBJECT },
        { LARGE OBJECT },
        { LARGE OBJECT },
        ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

JSON在某些时候将包含一个大的,任意长度的对象数组.我想将这些对象中的每一个分别放入消息队列中.我不需要解码对象本身.

如果我使用我的常规方法,这将在解码之前将整个响应加载到内存中.

是否有一种很好的方法可以拆分每个LARGE OBJECT项目,因为响应仍在流入并将其发送到队列中?我这样做是为了避免在内存中保存尽可能多的数据.

谢谢!

streaming json http go

4
推荐指数
1
解决办法
1658
查看次数

标签 统计

go ×1

http ×1

json ×1

streaming ×1