diff --git a/context/context.go b/context/context.go
index 88f54375..7ce7f366 100644
--- a/context/context.go
+++ b/context/context.go
@@ -2457,11 +2457,19 @@ func (ctx *Context) ReadJSON(outPtr interface{}, opts ...JSONReader) error {
 			return err
 		}
 
-		return options.unmarshal(ctx.request.Context(), body, outPtr)
+		err = options.unmarshal(ctx.request.Context(), body, outPtr)
+		if err != nil {
+			return err
+		}
+	} else {
+		_, decodeFunc := options.getDecoder(ctx.request.Body, outPtr)
+		err := decodeFunc(ctx.request.Context(), outPtr)
+		if err != nil {
+			return err
+		}
 	}
 
-	_, decodeFunc := options.getDecoder(ctx.request.Body, outPtr)
-	return decodeFunc(ctx.request.Context(), outPtr)
+	return ctx.app.Validate(outPtr)
 
 	/*
 		b, err := ctx.GetBody()