Strcut对象转换

ToStruct转换

To*方法用于将整个Json包含的数据内容转换为指定的数据格式或者对象。

  1. data :=
  2. `
  3. {
  4. "count" : 1,
  5. "array" : ["John", "Ming"]
  6. }`
  7. if j, err := gjson.DecodeToJson(data); err != nil {
  8. panic(err)
  9. } else {
  10. type Users struct {
  11. Count int
  12. Array []string
  13. }
  14. users := new(Users)
  15. if err := j.ToStruct(users); err != nil {
  16. panic(err)
  17. }
  18. fmt.Printf(`%+v`, users)
  19. }
  20. // Output:
  21. // &{Count:1 Array:[John Ming]}

GetStruct转换

Get*方法用于获得指定层级的节点数据,并将该数据转换为指定的结构体对象。

  1. data :=
  2. `{
  3. "users" : {
  4. "count" : 1,
  5. "array" : ["John", "Ming"]
  6. }
  7. }`
  8. if j, err := gjson.DecodeToJson(data); err != nil {
  9. panic(err)
  10. } else {
  11. type Users struct {
  12. Count int
  13. Array []string
  14. }
  15. users := new(Users)
  16. if err := j.GetStruct("users", users); err != nil {
  17. panic(err)
  18. }
  19. fmt.Printf(`%+v`, users)
  20. }
  21. // Output:
  22. // &{Count:1 Array:[John Ming]}