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  }