Streaming Decoder & Encoder

Pada kenyataanya, kadang data JSON nya berasal dari Input berupa io.Reader (File, Network, Request Body) Kita bisa saja membaca semua datanya terlebih dahulu, lalu simpan di variable, baru lakukan konversi dari JSON, namun hal ini sebenarnya tidak perlu dilakukan, karena package json memiliki fitur untuk membaca data dari Stream.

Decoder -> JSON -> Go object

Encoder -> Go object -> JSON

Decode JSON -> Struct

func json.NewDecoder(r io.Reader) *json.Decoder

io.Reader :

type Reader interface {
        Read(buf []byte) (n int, err error)
}

Example :

package main

import (
    "encoding/json"
    "fmt"
    "os"
)

type Customer struct {
    Name string
    Age  int
}

func main() {
    customer := Customer{}

    reader, err := os.Open("customer.json")
    if err != nil {
        panic(err)
    }
    decoder := json.NewDecoder(reader)
    decoder.Decode(&customer)
    fmt.Println(customer)
}

Encode Struct -> JSON

io.Writer :

Example :

JSON file "sample_output.json" will be created with the contents

Last updated