将很大的json解码为结构数组

时间:2019-01-22 20:46:16

标签: go

我有一个具有REST API的Web应用程序,获取JSON作为输入并执行此JSON的转换。

这是我的代码:

func (a *API) getAssignments(w http.ResponseWriter, r *http.Request) {

   var document DataPacket
   err := json.NewDecoder(r.Body).Decode(&document)
   if err != nil {
       a.handleJSONParseError(err, w)
      return
   }

   // transformations
我得到的

JSON是结构的集合。外部应用程序使用我的应用程序,并向我发送非常大的json文件(300-400MB)。瞬间解码此json需要大量时间和大量内存。

有什么方法可以将此json作为流工作,并可以从该集合中一步一步地解码结构?

1 个答案:

答案 0 :(得分:6)

首先,阅读文档。


  

Package json

     

导入“ encoding / json”

     

func (*Decoder) Decode

SELECT @@error_count
     

Decode从其输入中读取下一个JSON编码的值并将其存储   在v所指向的值中。

     

Example (Stream): This example uses a Decoder to decode a streaming array of JSON objects.

     

游乐场:https://play.golang.org/p/o6hD-UV85SZ

func (dec *Decoder) Decode(v interface{}) error