golang提取json信息
使用标准库
json数据如下
- key
- token
{"key":"test.txt","token":"zM_pCg7E1kBvwD0DlGQUadtxVGkumuKNQIDVI4Nl:UD82danFdTcHJsDPPuEa1fieyto=:eyJzY29wZSI6InBpYy1nb2Nsb3VkY29kZXIiLCJkZWFkbGluZSI6MTYxNzM1NDkwOX0="}
我们如何使用golang提取该信息呢?
可以使用json标准库中的Unmarshal()函数进行解码
json字符串解析时,需要一个“接收体”接受解析后的数据。我们使用一个结构体。
结构体如何定义可以使用jsonTostruct工具
Go 支持使用 原始字符串字面值,也就是 " ` " 来表示原生字符串,在需要转义的场景下,我们应该尽量使用这种方案来替换。
package main
import (
"encoding/json"
"fmt"
"log"
)
type StructName struct {
Key string `json:"key"`
Token string `json:"token"`
}
func main() {
data := `{"key":"test.txt","token":"zM_pCg7E1kBvwD0DlGQUadtxVGkumuKNQIDVI4Nl:UD82danFdTcHJsDPPuEa1fieyto=:eyJzY29wZSI6InBpYy1nb2Nsb3VkY29kZXIiLCJkZWFkbGluZSI6MTYxNzM1NDkwOX0="}`
s := StructName{}
if err := json.Unmarshal([]byte(data), &s); err != nil {
log.Fatal("error")
}
fmt.Println(s.Key)
fmt.Println(s.Token)
}
使用gjson
package main
import (
"fmt"
"github.com/tidwall/gjson"
)
func main() {
data := `{"key":"test.txt","token":"zM_pCg7E1kBvwD0DlGQUadtxVGkumuKNQIDVI4Nl:UD82danFdTcHJsDPPuEa1fieyto=:eyJzY29wZSI6InBpYy1nb2Nsb3VkY29kZXIiLCJkZWFkbGluZSI6MTYxNzM1NDkwOX0="}`
valueKey := gjson.Get(data, "key")
valueToken := gjson.Get(data, "token")
fmt.Println(valueKey)
fmt.Println(valueToken)
}