Sandilya Phani Kumar Karavadi ⚡️⚡️

Go "encoding/json/v2" Unmarshall Stream

September 17, 2026 • 2 min read • by Phani Kumar

Exploring Go json v2 unmarshall in depth

Go encoding/json/v2 Unmarshall Stream

How to Efficiently unmarshall a stream of data ⁇

Old Ways with encoding/json

func OldJsonStreamUnmarshal(dataStream io.Reader, v interface{}) error {
	data, err := io.ReadAll(dataStream)
	if err != nil {
		return err
	}
	return json.Unmarshal(data, v)
}
func OldJsonStreamUnmarshalWithDecoder(dataStream io.Reader, v interface{}) error {
	return json.NewDecoder(dataStream).Decode(v)
}

New Ways with encoding/json/v2

import (
	"encoding/json"
	jsonv2 "encoding/json/v2"
	"io"
)
func NewJsonV2StreamUnmarshal(dataStream io.Reader, v interface{}) error {
	data, err := io.ReadAll(dataStream)
	if err != nil {
		return err
	}
	return jsonv2.Unmarshal(data, v)
}
import (
	"encoding/json"
	jsonv2 "encoding/json/v2"
	"io"
)
func NewJsonV2StreamUnmarshalWithDecoder(dataStream io.Reader, v interface{}) error {
	return jsonv2.UnmarshalRead(dataStream, v)
}

Comparision

Conclusion

func NewJsonV2StreamUnmarshalWithDecoder(dataStream io.Reader, v interface{}) error {
	return jsonv2.UnmarshalRead(dataStream, v)
}
	// NewJsonV2StreamUnmarshalWithDecoder
	var person4 Person
	err = NewJsonV2StreamUnmarshalWithDecoder(getNewStream(), &person4)
	if err != nil {
		fmt.Println("Error unmarshalling JSON v2 with decoder:", err)
		return
	}
	fmt.Printf("New JSON v2 Unmarshal with Decoder: %+v\n", person4)

References


← Makefile for Go Apps   •   Zine CLI Installation Guide for macOS →   or   Back to the Homepage