package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
)
var jsonStr1 string = `{ "foo" :
{ "bar1" : 1,
"bar2" : "ha" },
"foo2" : "val" }`
func decodeAndPrint(s string) {
var data interface{}
p := []byte(s)
dec := json.NewDecoder(bytes.NewBuffer(p))
dec.UseNumber()
err := dec.Decode(&data)
if err != nil {
log.Fatalf("decodeAndPrint: dec.Decode() failed with '%s'\ns='%s'\n", err.Error(), s)
}
fmt.Printf("'%#v'\n", data)
}
func main() {
decodeAndPrint(jsonStr1)
decodeAndPrint("{}")
//decodeAndPrint("5")
//decodeAndPrint("{[5,8]}")
}