在过去,我使用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项目,因为响应仍在流入并将其发送到队列中?我这样做是为了避免在内存中保存尽可能多的数据.
谢谢!