diff --git a/serverutil/json.go b/serverutil/json.go index b307932eb878197d49c945e51e5f42adb240747e..746ed201eff520118640e881137bb86c38c427aa 100644 --- a/serverutil/json.go +++ b/serverutil/json.go @@ -2,6 +2,7 @@ package serverutil import ( "encoding/json" + "log" "net/http" ) @@ -28,10 +29,19 @@ func DecodeJSONRequest(w http.ResponseWriter, r *http.Request, obj interface{}) // EncodeJSONResponse writes an application/json response to w. func EncodeJSONResponse(w http.ResponseWriter, obj interface{}) { + data, err := json.Marshal(obj) + if err != nil { + log.Printf("JSON serialization error: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") w.Header().Set("Pragma", "no-cache") w.Header().Set("Cache-Control", "no-store") w.Header().Set("Expires", "-1") w.Header().Set("X-Content-Type-Options", "nosniff") - _ = json.NewEncoder(w).Encode(obj) + if _, err = w.Write(data); err != nil { + log.Printf("error writing response: %v", err) + } }