Skip to content

Instantly share code, notes, and snippets.

@astaxie
Forked from border/Makefile
Created July 3, 2012 06:17
Show Gist options
  • Save astaxie/3038026 to your computer and use it in GitHub Desktop.
Save astaxie/3038026 to your computer and use it in GitHub Desktop.
json example in golang
{"object":
{
"buffer_size": 10,
"Databases":
[
{
"host": "localhost",
"user": "root",
"pass": "",
"type": "mysql",
"name": "go",
"Tables":
[
{
"name": "testing",
"statment": "teststring",
"regex": "teststring ([0-9]+) ([A-z]+)",
"Types":
[
{
"id": "int",
"value": "string"
}
]
}
]
}
]
}
}
package main
/*
cat config.json
{"object":
{
"buffer_size": 10,
"Databases":
[
{
"host": "localhost",
"user": "root",
"pass": "",
"type": "mysql",
"name": "go",
"Tables":
[
{
"name": "testing",
"statment": "teststring",
"regex": "teststring ([0-9]+) ([A-z]+)",
"Types":
[
{
"id": "int",
"value": "string"
}
]
}
]
}
]
}
}
*/
import (
"fmt"
"os"
"json"
"io/ioutil"
)
type jsonobject struct {
Object ObjectType
}
type ObjectType struct {
Buffer_size int
Databases []DatabasesType
}
type DatabasesType struct {
Host string
User string
Pass string
Type string
Name string
Tables []TablesType
}
type TablesType struct {
Name string
Statment string
Regex string
Types []TypesType
}
type TypesType struct {
Id string
Value string
}
// Main function
// I realize this function is much too simple I am simply at a loss to
func main() {
file, e := ioutil.ReadFile("./config.json")
if e != nil {
fmt.Printf("File error: %v\n", e)
os.Exit(1)
}
fmt.Printf("%s\n", string(file))
//m := new(Dispatch)
//var m interface{}
var jsontype jsonobject
json.Unmarshal(file, &jsontype)
fmt.Printf("Results: %v\n", jsontype)
}
include $(GOROOT)/src/Make.inc
GOFMT=gofmt -spaces=true -tabindent=false -tabwidth=4
all:
$(GC) jsontest.go
$(LD) -o jsontest.out jsontest.$O
format:
$(GOFMT) -w jsontest.go
clean:
rm -rf *.8 *.o *.out *.6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment