Golang go-simplejson

时间:2025-03-08 07:19:34
package main import ( "fmt" simplejson "/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@", "phoneNum": ["13974999999","13984999999"] }, { "name": "aaaaa", "age": 20, "email": "aaaaaa@", "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) } } }