My use case was to read a base64 encoded file of unknown size, inside a JSON document that was sent via a webhook. I wanted to read it as a stream (io.Reader) to minimize memory usage and preventing crashes for huge strings:
func(body io.Reader) {
iter := jsoniter.Parse(ConfigDefault, body, 4096)
// Finding the wanted string is skipped here for brevity
r := iter.ReadStringAsReader()
dec := base64.NewDecoder(base64.StdEncoding, r)
// Reading from `dec` is skipped here for brevity
}
My use case was to read a base64 encoded file of unknown size, inside a JSON document that was sent via a webhook. I wanted to read it as a stream (
io.Reader
) to minimize memory usage and preventing crashes for huge strings: