json.go 821 B

1234567891011121314151617181920212223242526272829303132333435
  1. package render
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. )
  6. type (
  7. jsonRender struct{}
  8. indentedJSON struct{}
  9. )
  10. func (_ jsonRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
  11. return WriteJSON(w, code, data[0])
  12. }
  13. func (_ indentedJSON) Render(w http.ResponseWriter, code int, data ...interface{}) error {
  14. return WriteIndentedJSON(w, code, data[0])
  15. }
  16. func WriteJSON(w http.ResponseWriter, code int, data interface{}) error {
  17. writeHeader(w, code, "application/json; charset=utf-8")
  18. return json.NewEncoder(w).Encode(data)
  19. }
  20. func WriteIndentedJSON(w http.ResponseWriter, code int, data interface{}) error {
  21. writeHeader(w, code, "application/json; charset=utf-8")
  22. jsonData, err := json.MarshalIndent(data, "", " ")
  23. if err != nil {
  24. return err
  25. }
  26. _, err = w.Write(jsonData)
  27. return err
  28. }