kjk
2/19/2014 - 12:27 AM

test_json.go

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]}")
}