一、处理json字符串数据
package mainimport ("fmt""github.com/tidwall/gjson"
)const json = `{"username": "tanglei","pwd": "111111","info": {"age": "18","sex": "男","love": [{"python": "selenium1","java": "jmeter"},{"vue": "element","react": {"test1": "123","test2": {"name": "${name}"}}}]}
}
`func main() {value := gjson.Get(json, "info.love.1.react.test2.name")fmt.Println(value.String())
}
二、读取json文件
package mainimport ("fmt""io/ioutil""os"
)func readJSONFile(path string) string {jsonFile, err := os.Open(path)if err != nil {fmt.Println(err)}defer jsonFile.Close()byteValue, _ := ioutil.ReadAll(jsonFile)return string(byteValue)
}func main() {jsonData := readJSONFile("user.json")fmt.Println(jsonData)
}
三、将json格式数据处理成map
func jsonToMap(data string) (result map[string]interface{}){err := json.Unmarshal([]byte(data), &result)if err != nil {fmt.Println("JsonToMapDemo err: ", err)}return
}
四、随机从数组里取值
package mainimport ("fmt""math/rand""time"
)func randomAccessData(data []string) string {rand.Seed(time.Now().UnixNano())a := rand.Intn(len(data))return data[a]
}func main() {res2 := []string{"1", "2", "3", "4", "5", "6"}res3 := randomAccessData(res2)fmt.Println(res3)
}
五、正则匹配
package mainimport ("fmt""regexp"
)func matchRegular(data string, rule string) (res []string) {reg1 := regexp.MustCompile(rule)if reg1 == nil { fmt.Println("err = ")return}result := reg1.FindAllStringSubmatch(data, -1)for _, value := range result {res = append(res, value[1])}return res
}func main() {jsonData := `{"username": "root","pwd": "123456","info": {"age": "18","sex": "男","love": [{"python": "selenium1","java": "jmeter"}]}}`res0 := matchRegular(jsonData, `"pwd": "(.+?)"`)fmt.Println(res0)
}
六、生成随机IP地址
package mainimport ("fmt""math/rand""time"
)func randIP() string {rand.Seed(time.Now().UnixNano())a := rand.Intn(256)b := rand.Intn(256)c := rand.Intn(256)d := rand.Intn(256) ip := fmt.Sprintf("%d.%d.%d.%d", a, b, c, d)return ip
}func main() {ip := randIP()fmt.Println(ip)
}
七、go http客户端(使用三方库构造)
package mainimport ("fmt""github.com/kirinlabs/HttpRequest""strings"
)func handleRes(resp *HttpRequest.Response,err error) (result string,error error) {defer resp.Close()if err != nil {error = errreturn "", err}body, _ := resp.Body()result = string(body)return
}
func requestsGetBody(url string, headers map[string]string, data map[string]interface{}) (result string, error error) {configData, _ := json.Marshal(&data)param := bytes.NewReader(configData)fmt.Println("data:", data)client := &http.Client{}req, err1 := http.NewRequest("GET", url, param)if err1 != nil {error = err1return "", err1}for key, value := range headers {req.Header.Add(key, value)}res, err2 := client.Do(req)if err2 != nil {error = err2return "", err2}defer res.Body.Close()body, err3 := ioutil.ReadAll(res.Body)if err3 != nil {error = err3return "", err3}result = string(body)return
}
func sendRequests(method string, url string, headers map[string]string, cookies map[string]string, data map[string]interface{}) (result string, error error) {req := HttpRequest.NewRequest().Debug(false).SetTimeout(5)req.SetHeaders(headers)req.SetCookies(cookies)if strings.Contains(strings.ToUpper(method), "GET") {headerValue, _ := json.Marshal(headers)headerString := string(headerValue)if strings.Contains(headerString, "json") {result, error = requestsGetBody(url, headers, data)} else {resp, err := req.Get(url, data)result, error = handleRes(resp, err)}} else if strings.Contains(strings.ToUpper(method), "POST") {resp, err := req.Post(url, data)result, error = handleRes(resp, err)}return
}func main() {head := map[string]string{"Authorization": "JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiN2MzZGY4NjUtMGJjYS00MDRjLThmMzAtODVlNjNiOThlNmNlIiwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTYzNzU5MzQ5NywiZW1haWwiOiJhZG1pbkBxcS5jb20ifQ.1BOeh4HABB2J-Vfr_uG9tAeobURIjFVXlGpQjtLqeZI"}cookie := map[string]string{}data := map[string]interface{}{}resp , err := sendRequests("get", "http://127.0.0.1:10000/interface", head, cookie, data)fmt.Println("resp:",resp)fmt.Println("err:",err)
}