Ver Fonte

Adds indented JSON render

Manu Mtz-Almeida há 10 anos atrás
pai
commit
abcc6d9dec
1 ficheiros alterados com 18 adições e 5 exclusões
  1. 18 5
      render/render.go

+ 18 - 5
render/render.go

@@ -19,6 +19,8 @@ type (
 
 	jsonRender struct{}
 
+	indentedJSON struct{}
+
 	xmlRender struct{}
 
 	plainTextRender struct{}
@@ -33,11 +35,12 @@ type (
 )
 
 var (
-	JSON      = jsonRender{}
-	XML       = xmlRender{}
-	HTMLPlain = htmlPlainRender{}
-	Plain     = plainTextRender{}
-	Redirect  = redirectRender{}
+	JSON         = jsonRender{}
+	IndentedJSON = indentedJSON{}
+	XML          = xmlRender{}
+	HTMLPlain    = htmlPlainRender{}
+	Plain        = plainTextRender{}
+	Redirect     = redirectRender{}
 )
 
 func (_ redirectRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
@@ -51,6 +54,16 @@ func (_ jsonRender) Render(w http.ResponseWriter, code int, data ...interface{})
 	return json.NewEncoder(w).Encode(data[0])
 }
 
+func (_ indentedJSON) Render(w http.ResponseWriter, code int, data ...interface{}) error {
+	WriteHeader(w, code, "application/json")
+	jsonData, err := json.MarshalIndent(data, "", "    ")
+	if err != nil {
+		return err
+	}
+	_, err = w.Write(jsonData)
+	return err
+}
+
 func (_ xmlRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
 	WriteHeader(w, code, "application/xml")
 	return xml.NewEncoder(w).Encode(data[0])