openai_json_decode.go 460 B

123456789101112131415161718192021222324
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "errors"
  6. "io"
  7. )
  8. func decodeOpenAIJSONUseNumber(data []byte, dst any) error {
  9. decoder := json.NewDecoder(bytes.NewReader(data))
  10. decoder.UseNumber()
  11. if err := decoder.Decode(dst); err != nil {
  12. return err
  13. }
  14. var trailing any
  15. if err := decoder.Decode(&trailing); !errors.Is(err, io.EOF) {
  16. if err == nil {
  17. return errors.New("multiple JSON values are not allowed")
  18. }
  19. return err
  20. }
  21. return nil
  22. }