cell_image.go 775 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package xvdoc
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. )
  6. type cellImage struct {
  7. x, y int
  8. path string
  9. name string
  10. ext string
  11. format JSONMap
  12. }
  13. func (s *cellImage) UnmarshalJSON(src []byte) (err error) {
  14. dec := json.NewDecoder(bytes.NewReader(src))
  15. var t json.Token
  16. for dec.More() && err == nil {
  17. if t, err = dec.Token(); err == nil {
  18. if _, check := t.(json.Delim); !check {
  19. switch t.(string) {
  20. case "x":
  21. err = dec.Decode(&s.x)
  22. case "y":
  23. err = dec.Decode(&s.y)
  24. case "path":
  25. err = dec.Decode(&s.path)
  26. case "format":
  27. err = dec.Decode(&s.format)
  28. case "name":
  29. err = dec.Decode(&s.name)
  30. case "ext":
  31. err = dec.Decode(&s.ext)
  32. default:
  33. err = dec.Decode(new(interface{}))
  34. }
  35. }
  36. }
  37. }
  38. return
  39. }