github地址
簡介
GJSON 是一個 Go 包,它提供了一種從 json 文件中獲取值的快速而簡單的方法。它具有單行檢索、點符號路徑、迭代和解析 json 行等功能。主要是從
json
字串中取檢索的key
很實用。
簡單實用
當我們需要通過go取請求一些第三方介面時獲取到的響應json需要快速的取相關欄位的資料
- 官方栗子 ?
package main
import "github.com/tidwall/gjson"
const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}`
func main() {
value := gjson.Get(json, "name.last")
println(value.String())
}
實際上使用案例
package main
import (
"encoding/json"
"fmt"
"github.com/tidwall/gjson"
"go_im/pkg/helpler"
"io/ioutil"
"net/http"
"net/url"
"strings"
)
func main() {
keys := httpReuqet();
fmt.Println(keys)
}
func httpReuqet() string {
urls :="http://adminapi.test/api/captcha"
data := url.Values{"app_id":{""}, "mobile_tel":{""}}
body := strings.NewReader(data.Encode())
resp,err := http.Post(urls,"application/x-www-form-urlencoded",body)
if err!=nil{
fmt.Println(err)
}
defer resp.Body.Close()
bodyC, _ := ioutil.ReadAll(resp.Body)
jsonMap := helpler.JsonToMap(bodyC)
err = json.Unmarshal(bodyC, &jsonMap)
bodyS := string(bodyC);
keys := gjson.Get(bodyS,"data.captcha.key")
return keys.Str
}
當然上面只是例項。不能直接返回
keys
,ide會報錯,看它原始碼
顯然
Get
方法返回的是一個結構體,我們需要根據取的key的資料型別去取結構體上面的引數例如string型別keys.Str
本作品採用《CC 協議》,轉載必須註明作者和本文連結