diff --git a/internal/service/policy/service.go b/internal/service/policy/service.go
index a632228532b14c7178f6c147379a04df01573350..8ff2196dae5f3bf179432cb51a5c87238f1eed29 100644
--- a/internal/service/policy/service.go
+++ b/internal/service/policy/service.go
@@ -96,17 +96,6 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p
 		return nil, errors.New("policy evaluation result expressions are empty")
 	}
 
-	jsonValue, err := json.Marshal(resultSet[0].Expressions[0].Value)
-	if err != nil {
-		logger.Error("error encoding result to json", zap.Error(err))
-		return nil, errors.New("error encoding result to json")
-	}
-
-	if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil {
-		logger.Error("error storing policy result in cache", zap.Error(err))
-		return nil, errors.New("error storing policy result in cache")
-	}
-
 	// If there is only a single result from the policy evaluation and it was assigned to an empty
 	// variable, then we'll return a custom response containing only the value of the empty variable
 	// without any mapping.
@@ -121,6 +110,17 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p
 		}
 	}
 
+	jsonValue, err := json.Marshal(result)
+	if err != nil {
+		logger.Error("error encoding result to json", zap.Error(err))
+		return nil, errors.New("error encoding result to json")
+	}
+
+	if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil {
+		logger.Error("error storing policy result in cache", zap.Error(err))
+		return nil, errors.New("error storing policy result in cache")
+	}
+
 	return &policy.EvaluateResult{
 		Result: result,
 		ETag:   evaluationID,