diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index 71ef37b..b4dabcf 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -212,6 +212,10 @@ public function build(ContainerBuilder $container) {
       ->addArgument(array())
       ->addArgument(array());
 
+    $container->register('serializer.normalizer.entity', 'Drupal\Core\Serialization\EntityNormalizer')->addTag('normalizer');
+    $container->register('serializer.encoder.json', 'Symfony\Component\Serializer\Encoder\JsonEncoder')->addTag('encoder');
+    $container->register('serializer.encoder.xml', 'Symfony\Component\Serializer\Encoder\XmlEncoder')->addTag('encoder');
+
     $container->register('flood', 'Drupal\Core\Flood\DatabaseBackend')
       ->addArgument(new Reference('database'));
 
diff --git a/core/lib/Drupal/Core/Serialization/EntityNormalizer.php b/core/lib/Drupal/Core/Serialization/EntityNormalizer.php
new file mode 100644
index 0000000..61239fc
--- /dev/null
+++ b/core/lib/Drupal/Core/Serialization/EntityNormalizer.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Entity\EntityNormalizer.
+ */
+
+namespace Drupal\Core\Serialization;
+
+use Drupal\Core\Entity\EntityInterface;
+use Symfony\Component\Serializer\Exception\RuntimeException;
+use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
+
+/**
+ * Converts the Drupal entity object structures to a normalized array.
+ *
+ * The format is not checked here, but assumed it will be supported.
+ * @see \Drupal\Core\Entity\EntityInterface
+ */
+class EntityNormalizer implements NormalizerInterface {
+
+  /**
+   * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
+   */
+  public function normalize($object, $format = NULL) {
+    return $object->getPropertyValues();
+  }
+
+  /**
+   * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::supportsNormalization().
+   */
+  public function supportsNormalization($data, $format = NULL) {
+    return is_object($data) && ($data instanceof EntityInterface);
+  }
+
+}
diff --git a/core/modules/system/lib/Drupal/system/Tests/Serialization/EntityNormalizerTest.php b/core/modules/system/lib/Drupal/system/Tests/Serialization/EntityNormalizerTest.php
new file mode 100644
index 0000000..edaf552
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Serialization/EntityNormalizerTest.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\system\Tests\Serialization\EntityNormalizerTest.
+ */
+
+namespace Drupal\system\Tests\Serialization;
+
+use Drupal\Core\Serialization\EntityNormalizer;
+use Drupal\simpletest\WebTestBase;
+use Symfony\Component\Serializer\Exception\UnexpectedValueException;
+
+class EntityNormalizerTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('entity_test');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Entity Normalizer tests',
+      'description' => 'Tests that entities can be normalized.',
+      'group' => 'Serialization',
+    );
+  }
+
+  /**
+   * Tests the normalize function.
+   */
+  public function testNormalize() {
+    $normalizer = new EntityNormalizer();
+
+    $values = array(
+      'name' => $this->randomName(),
+      'user_id' => $GLOBALS['user']->uid,
+      'field_test_text' => array(
+        'value' => $this->randomName(),
+        'format' => 'full_html',
+      ),
+    );
+    $entity = entity_create('entity_test', $values);
+    $entity->save();
+
+    $expectedArray = array (
+      'id' => array (
+        array (
+          'value' => 1,
+        ),
+      ),
+      'revision_id' => array (
+        array (
+          'value' => 1,
+        ),
+      ),
+      'uuid' => array (
+        array (
+          'value' => $entity->uuid(),
+        ),
+      ),
+      'langcode' => array (
+        array (
+          'value' => LANGUAGE_NOT_SPECIFIED,
+        ),
+      ),
+      'default_langcode' => array (
+        NULL,
+      ),
+      'name' => array (
+        array (
+          'value' => $values['name'],
+        ),
+      ),
+      'user_id' => array (
+        array (
+          'value' => $values['user_id'],
+        ),
+      ),
+      'field_test_text' => array (
+        array (
+          'value' => $values['field_test_text']['value'],
+          'format' => $values['field_test_text']['format'],
+        ),
+      ),
+    );
+
+    $normalized = $normalizer->normalize($entity);
+    //@todo Expand this to check each value individually and then check the
+    // array keys to ensure no other properties are added.
+    $this->assertEqual($expectedArray, $normalized, 'Normalized array.');
+  }
+}
diff --git a/core/modules/system/lib/Drupal/system/Tests/Serialization/SerializationTest.php b/core/modules/system/lib/Drupal/system/Tests/Serialization/SerializationTest.php
index cf766ec..0a69208 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Serialization/SerializationTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Serialization/SerializationTest.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Definition of Drupal\jsonld\Tests\SerializationTest.
+ * Definition of Drupal\system\Tests\Serialization\SerializationTest.
  */
 
 namespace Drupal\system\Tests\Serialization;
