關於GJSON包的簡單使用

Latent發表於2021-06-21

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會報錯,看它原始碼

關於gjson包使用

關於gjson包使用

顯然Get方法返回的是一個結構體,我們需要根據取的key的資料型別去取結構體上面的引數例如string型別keys.Str

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不成大牛,不改個簽

相關文章