Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Decoding top level JSON array with json.Decoder

Is it possible to decode top level JSON array with json.Decoder?

Or reading entire JSON and json.Unmarshall is the only way in this case?

I have read the accepted answer in this question and cannot figure out how to use it with top level JSON array

like image 701
Rustam Avatar asked Aug 02 '16 09:08

Rustam


2 Answers

You use json.Decoder in same way as any other json. Only difference is that instead of decoding into a struct, json need to be decoded into a slice of struct. This is a very simple example. Go Playground

package main

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

type Result struct {
    Name         string `json:"Name"`
    Age          int    `json:"Age`
    OriginalName string `json:"Original_Name"`
}

func main() {
    jsonString := `[{"Name":"Jame","Age":6,"Original_Name":"Jameson"}]`
    result := make([]Result, 0)
    decoder := json.NewDecoder(bytes.NewBufferString(jsonString))
    err := decoder.Decode(&result)
    if err != nil {
        panic(err)
    }
    fmt.Println(result)
}
like image 117
Mayank Patel Avatar answered Sep 30 '22 15:09

Mayank Patel


https://play.golang.org/p/y2sKN7e8gf

Note that use of var r interface{} is not recommended, you should define your JSON structure as a Go struct to parse it correctly.

like image 30
huygn Avatar answered Sep 30 '22 13:09

huygn