Decode large stream JSON

后端 未结 3 1827
野的像风
野的像风 2020-12-16 11:21

I have a massive JSON array stored in a file (\"file.json\") I need to iterate through the array and do some operation on each element.

err = json.Unmarshal(         


        
3条回答
  •  粉色の甜心
    2020-12-16 11:41

    So, as commenters suggested, you could use the streaming API of "encoding/json" for reading one string at a time:

    r := ... // get some io.Reader (e.g. open the big array file)
    d := json.NewDecoder(r)
    // read "["
    d.Token()
    // read strings one by one
    for d.More() {
        s, _ := d.Token()
        // do something with s which is the newly read string
        fmt.Printf("read %q\n", s)
    }
    // (optionally) read "]"
    d.Token()
    

    Note that for simplicity I've left error handling out which needs to be implemented.

提交回复
热议问题