github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/06_xmljson/json/json_test.go (about) 1 package json 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "github.com/bitly/go-simplejson" 7 "testing" 8 ) 9 10 func TestParseJson(t *testing.T) { 11 var s Serverslice 12 str := `{"servers":[{"serverName":"Shanghai_VPN","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}]}` 13 json.Unmarshal([]byte(str), &s) 14 fmt.Println(s) 15 } 16 17 func TestParseJsonMap(t *testing.T) { 18 b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`) 19 var f interface{} 20 21 err := json.Unmarshal(b, &f) 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 m, ok := f.(map[string]interface{}) 27 if !ok { 28 t.Fatal("转换失败") 29 } 30 for k, v := range m { 31 switch vv := v.(type) { 32 case string: 33 fmt.Println(k, "is string", vv) 34 case int: 35 fmt.Println(k, "is int", vv) 36 case []interface{}: 37 fmt.Println(k, "is an array:") 38 for i, u := range vv { 39 fmt.Println(i, u) 40 } 41 default: 42 fmt.Println(k, "is of a type I don't know how to handle") 43 } 44 } 45 } 46 47 func TestSimpleJosnDemo(t *testing.T) { 48 js, err := simplejson.NewJson([]byte(`{ 49 "test": { 50 "array": [1, "2", 3], 51 "int": 10, 52 "float": 5.150, 53 "bignum": 9223372036854775807, 54 "string": "simplejson", 55 "bool": true 56 } 57 }`)) 58 if err != nil { 59 fmt.Printf("error: %v\n", err) 60 } 61 arr, _ := js.Get("test").Get("array").Array() 62 i, _ := js.Get("test").Get("int").Int() 63 ms := js.Get("test").Get("string").MustString() 64 65 fmt.Printf("%v\n", arr) 66 fmt.Printf("%d\n", i) 67 fmt.Printf("%s\n", ms) 68 } 69 70 func TestCreateJson(t *testing.T) { 71 var s Serverslice 72 s.Servers = append(s.Servers, Server{ServerName: "Shanghai_VPN", ServerIP: "127.0.0.1"}) 73 s.Servers = append(s.Servers, Server{ServerName: "Beijing_VPN", ServerIP: "127.0.0.2"}) 74 b, err := json.Marshal(s) 75 if err != nil { 76 fmt.Println("json err:", err) 77 } 78 fmt.Println(string(b)) 79 }