json_unmarshal_amd64.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // SiYuan - Refactor your thinking
  2. // Copyright (c) 2020-present, b3log.org
  3. //
  4. // This program is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU Affero General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU Affero General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU Affero General Public License
  15. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  16. package filesys
  17. import (
  18. "github.com/bytedance/sonic"
  19. "github.com/goccy/go-json"
  20. "github.com/siyuan-note/logging"
  21. )
  22. func unmarshalJSON(data []byte, v interface{}) (err error) {
  23. //now := time.Now()
  24. defer func() {
  25. if e := recover(); nil != e {
  26. logging.LogWarnf("[sonic] unmarshalJSON failed: %s", e)
  27. err = json.Unmarshal(data, v)
  28. } /*else {
  29. elapsed := time.Since(now)
  30. logging.LogInfof("[sonic] unmarshalJSON took %s", elapsed)
  31. }*/
  32. }()
  33. err = sonic.Unmarshal(data, v)
  34. return
  35. }