用JWT编码的Golang解析图

x0fgdtte  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(111)

在我的golang项目中,我需要解析和解码一些数据,编码在JWT token中。为此,我使用github.com/lestrrat-go/jwx/jwt。数据如下:

  1. "ver": "some ver",
  2. "pds": {
  3. "r": [
  4. {
  5. "comp": "some_string",
  6. "dur": 20,
  7. "u": "DAY",
  8. "res": "some other string"
  9. }
  10. ]
  11. }

字符串
所以我可以解码基本字符串(ver),这很简单,但我不能解码对象和数组,并不断得到一个错误。我尝试了以下方法:

  1. tokenRaw := "my_jwt_token_here"
  2. reader := strings.NewReader(tokenRaw)
  3. token, err := jwt.Parse(reader)
  4. if err != nil {
  5. return nil, err
  6. }
  7. type pdsrStruct struct {
  8. Comp string `json:"comp"`
  9. Duration int `json:"dur"`
  10. Unit string `json:"u"`
  11. Res string `json:"res"`
  12. }
  13. type R []pdsrStruct
  14. type Pds map[string]R
  15. var ok bool
  16. var pds Pds
  17. if ret, found := token.Get("pds"); found {
  18. if pds, ok = ret.(Pds); !ok {
  19. return nil, er.Errorf("failed to parse")
  20. }
  21. }


有什么好的建议都欢迎。谢谢。

7bsow1i6

7bsow1i61#

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. var text = []byte(`
  7. {
  8. "pds": {
  9. "r": [
  10. {
  11. "dur": 20,
  12. "u": "DAY"
  13. }
  14. ]
  15. }
  16. }
  17. `)
  18. func main() {
  19. var s struct {
  20. Pds struct {
  21. R []struct {
  22. Dur int
  23. U string
  24. }
  25. }
  26. }
  27. json.Unmarshal(text, &s)
  28. fmt.Printf("%+v\n", s) // {Pds:{R:[{Dur:20 U:DAY}]}}
  29. }

字符串

展开查看全部

相关问题