diff --git a/pkg/enqueue/Client/Extension/PrepareBodyExtension.php b/pkg/enqueue/Client/Extension/PrepareBodyExtension.php
index eeb0ded03..badaa15f7 100644
--- a/pkg/enqueue/Client/Extension/PrepareBodyExtension.php
+++ b/pkg/enqueue/Client/Extension/PrepareBodyExtension.php
@@ -2,6 +2,7 @@
 
 namespace Enqueue\Client\Extension;
 
+use ArrayObject;
 use Enqueue\Client\Message;
 use Enqueue\Client\PreSend;
 use Enqueue\Client\PreSendCommandExtensionInterface;
@@ -28,7 +29,14 @@ private function prepareBody(Message $message): void
         if (is_scalar($body) || null === $body) {
             $contentType = $contentType ?: 'text/plain';
             $body = (string) $body;
-        } elseif (is_array($body)) {
+        } elseif (is_array($body) || $body instanceof ArrayObject) {
+            // convert ArrayObjects to arrays
+            array_walk_recursive($body, function (&$value) {
+                if ($value instanceof ArrayObject) {
+                    $value = (array) $value;
+                }
+            });
+
             // only array of scalars is allowed.
             array_walk_recursive($body, function ($value) {
                 if (!is_scalar($value) && null !== $value) {
diff --git a/pkg/enqueue/Tests/Client/Extension/PrepareBodyExtensionTest.php b/pkg/enqueue/Tests/Client/Extension/PrepareBodyExtensionTest.php
index 454034abb..a8ac1f455 100644
--- a/pkg/enqueue/Tests/Client/Extension/PrepareBodyExtensionTest.php
+++ b/pkg/enqueue/Tests/Client/Extension/PrepareBodyExtensionTest.php
@@ -2,6 +2,7 @@
 
 namespace Enqueue\Tests\Client\Extension;
 
+use ArrayObject;
 use Enqueue\Client\DriverInterface;
 use Enqueue\Client\Extension\PrepareBodyExtension;
 use Enqueue\Client\Message;
@@ -120,6 +121,10 @@ public static function provideMessages()
 
         yield [['foo' => 'fooVal'], 'foo/bar', '{"foo":"fooVal"}', 'foo/bar'];
 
+        yield [new ArrayObject(['foo' => 'fooVal']), null, '{"foo":"fooVal"}', 'application/json'];
+
+        yield [['foo' => 'fooVal', 'bar' => new ArrayObject(['barOne', 'barTwo'])], null, '{"foo":"fooVal","bar":["barOne","barTwo"]}', 'application/json'];
+
         yield [new JsonSerializableObject(), null, '{"foo":"fooVal"}', 'application/json'];
 
         yield [new JsonSerializableObject(), 'foo/bar', '{"foo":"fooVal"}', 'foo/bar'];