Source code
a Go package to interact with arbitrary JSON.
Install
go get -u github.com/bitly/go-simplejson
Import
import "github.com/bitly/go-simplejson"
Demo
package main
import (
"fmt"
simplejson "github.com/bitly/go-simplejson"
)
func main() {
js,err := simplejson.NewJson([]byte(`
{
"test": {
"string_array": ["asdf","ghjk","zxcv"],"array": [1,"2",3],"arraywithsubs": [{"subkeyone": 1},{"subkeytwo": 2,"subkeythree": 3}],"int": 10,"float": 5.150,"bignum": 9223372036854775807,"string": "simplejson","bool": true
},"person": [
{
"name": "piao","age": 30,"email": "piaoyunsoft@163.com","phoneNum": ["13974999999","13984999999"]
},{
"name": "aaaaa","age": 20,"email": "aaaaaa@163.com","phoneNum": ["13974998888","13984998888"]
}
]
}
`))
if err != nil {
panic("json format error")
}
fmt.Println("\n")
// get some field
fmt.Println("---------------------get some field-----------------")
s,err := js.Get("test").Get("string").String()
if err != nil {
panic(err)
}
fmt.Println(s,"\n")
// check existence of some field
fmt.Println("---------------------check existence----------------")
_,ok := js.Get("test").CheckGet("string2")
if ok {
fmt.Println("exist!")
} else {
fmt.Println("not exist!")
}
fmt.Println("\n")
// array
fmt.Println("---------------------array--------------------------")
arr,err := js.Get("test").Get("string_array").StringArray()
fmt.Println("# array of string")
if err != nil {
panic(err)
}
for _,v := range arr {
fmt.Printf("%s\t",v)
}
fmt.Println("\n")
fmt.Println("# array of number and string")
arr2,err := js.Get("test").Get("array").Array()
if err != nil {
panic(err)
}
for _,v := range arr2 {
fmt.Printf("%T:%v\t",v,v)
}
fmt.Println("\n")
fmt.Println("# array of map")
arr3 := js.Get("test").Get("arraywithsubs").GetIndex(1).MustMap()
fmt.Printf("%v\t",arr3)
fmt.Printf("%v",arr3["subkeytwo"])
fmt.Println("\n")
//
fmt.Println("# array of json")
personArr,err := js.Get("person").Array()
fmt.Printf("Number of person: %d\n",len(personArr))
// Loop
fmt.Println("\t# Loop person")
for i,_ := range personArr {
person := js.Get("person").GetIndex(i)
name := person.Get("name").MustString()
age := person.Get("age").MustInt()
email := person.Get("email").MustString()
fmt.Printf("\tname=%s,age=%d,email=%s\n",name,age,email)
// get Phone number
fmt.Println("\t# Loop phone number")
phoneNumArr,_ := person.Get("phoneNum").Array()
for ii,vv := range phoneNumArr {
fmt.Println("\t",ii,vv)
}
}
}
Output:
---------------------get some field-----------------
simplejson
---------------------check existence----------------
not exist!
---------------------array--------------------------
# array of string
asdf ghjk zxcv
# array of number and string
json.Number:1 string:2 json.Number:3
# array of map
map[subkeytwo:2 subkeythree:3] 2
# array of json
Number of person: 2
# Loop person
name=piao,age=30,email=piaoyunsoft@163.com
# Loop phone number
0 13974999999
1 13984999999
name=aaaaa,age=20,email=aaaaaa@163.com
# Loop phone number
0 13974998888
1 13984998888